2017-07-26 218 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 回溯(最後最近一次調用):
文件 「test.py」,8號線,在 的鍵1, values1 in dict [keys]:KeyError:'a'

+0

這不是字典的字典,這是一個字典,他們的鍵和值是'tuple's。 –

回答

2

首先將您的變量dict重命名爲d

這不是詞典的字典。這是包含元組作爲關鍵字和值的字典。

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

一個簡單的for循環在這裏工作:

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(),因爲它在內存中創建字典的副本來遍歷

  3. 不要使用dict作爲變量名,它屏蔽了該內建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

迭代你需要調用函數「iteritems():」(在Python 2.7中),你可以在這裏閱讀更多關於它的信息

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)