如何在python中迭代字典字典

时间:2017-07-26 06:08:11

标签: python python-2.7 dictionary

我想遍历这本字典词典。最后,我想要将每个字典中的值分开..例如,0.5 / 0.4,0.3 / 0.2和0.1 / 0.1以找到最大值,但我还没到达那里。任何有关迭代的帮助都将不胜感激。

#!/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

但是我收到错误:

键:a 值:0.500000 追溯(最近的呼叫最后):
文件“test.py”,第8行,in     对于keys1,dict [keys]中的values1:KeyError:'a'

4 个答案:

答案 0 :(得分:3)

首先将变量dict重命名为d

这不是字典词典。这是包含元组作为键和值的字典。

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

答案 1 :(得分: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(),因为它会在内存中创建一个dict副本以进行迭代

  3. 不要将dict用作变量名称,它会影响内置dict

答案 2 :(得分: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

答案 3 :(得分: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)