字典不存储相同键的多个值

时间:2013-07-16 22:48:37

标签: python dictionary

这是我的代码:

import math

def distance(argv):
    comp_diff = []
    for comp_1, comp_2 in argv.iteritems():
        comp_diff.append(comp_1-comp_2)
        print comp_2
    return math.sqrt(sum([math.pow(comp,2) for comp in comp_diff]))

if __name__ == '__main__':
    components = {0:4, 0:5, 0:4}
    d = distance(components)
    print d

输出结果为:

4
4.0

它应该是:

4
5
4
5.1

为什么会这样?我改变了组件字典的长度,很明显只有最后一个键值对出现并被迭代。为什么是这样?请原谅我在Python中的新手。

2 个答案:

答案 0 :(得分:3)

您没有正确使用字典:

>>> components = {0:4, 0:5, 0:4}
>>> components
{0: 4}

你可以改用元组列表。

import math

def distance(argv):
    comp_diff = []
    for comp_1, comp_2 in argv:
        comp_diff.append(comp_1-comp_2)
        print comp_2
    return math.sqrt(sum([math.pow(comp,2) for comp in comp_diff]))

if __name__ == '__main__':
    components = [(0,4), (0,5), (0,4)]
    d = distance(components)
    print d

答案 1 :(得分:2)

dict每个键只能有一个值。 Python正在丢弃其中两个键值对。

(无关的说明可能会帮助您避免将来遇到麻烦:Dict键值对是无序的。不要试图依赖任何特定的迭代顺序。)