【发布时间】:2020-07-14 18:55:38
【问题描述】:
我是 python 新手,所以也许我的问题很容易解决。 我有一本组织如下的字典: my_dict = {'x': (1.1, 3.4), 'y': (4.3, 7.5), 'z': (7.3, 9.5)}。 我想将每个值减少相同的数字,所以这就是我想要做的:
for k,v in my_dict.items():
for a, b in v:
a = a * 0.3
b = b * 0.3
my_dict[k] = (a, b)
return my_dict
使用此代码时,我收到此错误:
for a, b in v:
TypeError: 'float' object is not iterable
所以看起来“for a, b in v”循环试图迭代浮点数,这是不可能的。 因此,我尝试在 for 循环中打印 my_dict.items() 和 k,v,以便查看 for 循环遍历的内容是什么,这就是我得到的:
for k,v in my_dict.items():
print my_dict.items()
print k,v
[('x', (1.1, 3.4)), ('y', (4.3, 7.5)), ('z', (7.3, 9.5))]
y (4.3, 7.5)
我可以看到两件奇怪的事情: - 我期待“打印 k,v”命令打印每个键,值对,但我只得到 y 键及其值 - 通过查看 my_dict.items(),在我看来 v 不是浮点数,而是包含两个浮点数的元组。那么为什么我会得到 float object is not iterable 错误呢?
非常感谢任何帮助。 再次,如果这是一个愚蠢的问题,我很抱歉,但我刚开始使用 python,我被这个问题困住了。
谢谢!
【问题讨论】:
-
你的意思只是
a, b = v解包元组
标签: python dictionary tuples iteration typeerror