这是我的代码:
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中的新手。
答案 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键值对是无序的。不要试图依赖任何特定的迭代顺序。)