2017-07-26 14 views
-1

辞書のこの辞書を通して繰り返したいと思います。最終的には、0.5/0.4,0.3/0.2、0.1/0.1などの各ディクテーションの値を最大値に分割したいが、まだ到達していない。反復の助けがあれば歓迎されます。Pythonで辞書の辞書を反復する方法

#!/usr/bin/env python2 

dict = {('a', 0.5): ('b', 0.4), ('c', 0.3): ("d", 0.2), ('e', 0.1): ('f', 0.1)} 

for keys, values in dict: 
    print "key: %s" % keys 
    print "values: %f" % values 
    for keys1, values1 in dict[keys]: 
     print "key1: %s" % keys1 
     print "values1: %f" % values1 

私はエラーを取得しかし:

キー: 値:0.500000 トレースバック(最新の呼び出しの最後):keys1ため で
ファイル "test.py"、ライン8を、 dict [keys]のvalues1:KeyError: 'a'

+0

。 –

答えて

2

最初に変数の名前をdictに変更してdに変更します。

これは辞書の辞書ではありません。これは、タプルをキーと値として含む辞書です。

for k, v in d.items(): 
    a = k[1] 
    b = v[1] 
    print(a/b) 
2

ループのためのシンプルなここに動作します:

In [1169]: for d in dict_: 
     ...:  print(d[-1], '/', dict_[d][-1]) 
     ...:  
0.5/0.4 
0.3/0.2 
0.1/0.1 

いくつかの考察 -

  1. あなたのキーと値の両方がタプルであるため、インデックスにそれぞれの場合の最後の要素を[-1]を使用

  2. dict.items()を使用しないでください。それは組み込みdict

2
dict = {('a', 0.5): ('b', 0.4), ('c', 0.3): ("d", 0.2), ('e', 0.1): ('f', 0.1)} 

for key, value in dict.iteritems(): 
    print "key=", key 
    print "value=",value 
    print "division=",key[1]/value[1] 

出力

key= ('a', 0.5) 
value= ('b', 0.4) 
division= 1.25 
key= ('c', 0.3) 
value= ('d', 0.2) 
division= 1.5 
key= ('e', 0.1) 
value= ('f', 0.1) 
division= 1.0 
1

を反復する影、変数名としてdictを使用しないでください

  • 上を反復するためにメモリ内のdictのコピーを作成しますディクショナリで関数 "iteritems():"(Python 2.7)を呼び出す必要があります。ここで詳しく読むことができます

    これらのキーと値が `tuple`sている辞書である辞書の辞書、ではありません

    Iterating over dictionaries using 'for' loops

    dicte = {('a', 0.5): ('b', 0.4), ('c', 0.3): ("d", 0.2), ('e', 0.1): ('f', 0.1)} 
    for keys, values in dicte.iteritems(): 
        print "key: {}".format(keys) 
        print "values: {}".format(values) 
        keys1, values1 = keys 
        print "key1: {}".format(keys1) 
        print "values1: {}".format(values1) 
    
    関連する問題