2017-07-26 228 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)