2016-04-23 6 views
0
for k, v in sorted(total_prob.items(), key = lambda x: x[1], reverse=True): 
    MLE_Prob, Bi_Prob = v 
    # here, k = tuple type of bigrams. v = tuple type of (mle prob, bi prob) 
    print tabulate([k,v[0], v[1]], headers = ["Bigram", "MLE_Prob", "Bi_Prob"], tablefmt="grid") 

私のデータは、{(a、b):(c、d)}のようになります。そしてfloat'objectが反復可能ではありません「、私が印刷したい結果がキーがタプルであり、値がタプルの辞書をテーブル形式で表示するにはどうすればよいですか?

header1  header2 header3 
(a, b)   c   d 

ですが、私は型エラーを得ました。 mle probとbi probはともに浮動小数点であり、その値は通常0.0022323xxxです。 このエラーを解消するにはどうすればよいですか?

答えて

0

まず、結果を配列として作成し、それを表形式で表示する必要があります。行ごとに表示することはできませんが、グリッド全体を一度に表示することはできません。

from tabulate import tabulate 

total_prob = {("a", "b"): (1, 2), ("c", "d"): (3, 4)} 
results = [] 
for k, v in sorted(total_prob.items(), key = lambda x: x[1], reverse=True): 
    MLE_Prob, Bi_Prob = v 
    results.append([k,MLE_Prob, Bi_Prob]) 

print tabulate(results, headers = ["Bigram", "MLE_Prob", "Bi_Prob"], tablefmt="grid") 

出力:

+------------+------------+-----------+ 
| Bigram  | MLE_Prob | Bi_Prob | 
+============+============+===========+ 
| ('c', 'd') |   3 |   4 | 
+------------+------------+-----------+ 
| ('a', 'b') |   1 |   2 | 
+------------+------------+-----------+ 

集計は、最初の引数として配列(列の配列)の配列をとります。だから、少なくとも、あなたはこのように集計を使用するために必要な:tabulate([[k,v[0], v[1]]],...が、その後、出力は次のようになります。

+------------+------------+-----------+ 
| Bigram  | MLE_Prob | Bi_Prob | 
+============+============+===========+ 
| ('c', 'd') |   3 |   4 | 
+------------+------------+-----------+ 
+------------+------------+-----------+ 
| Bigram  | MLE_Prob | Bi_Prob | 
+============+============+===========+ 
| ('a', 'b') |   1 |   2 | 
+------------+------------+-----------+ 
+0

感謝はそんなに私はそれを本当に感謝しています。 –

関連する問題