问题描述
因此,想象一下我有这样的命令:
dict = {
"100311929821626368" : {
"battles" : 2,
"loses" : 0,
"maxstamina" : 50,
"news" : True,
"stamina" : 50,
"weeb" : "Chuey",
"wins" : 0
},
"100802430467325952" : {
"battles" : 4,
"loses" : 0,
"maxstamina" : 50,
"news" : True,
"stamina" : 45,
"weeb" : "Red Haired Bastard",
"wins" : 0
},
"101970309296447488" : {
"battles" : 1,
"loses" : 0,
"maxstamina" : 50,
"news" : True,
"stamina" : 45,
"weeb" : "Niusky",
"wins" : 1
}
}
我的代码是这样的代码:
wow = 0
for id in dict:
for i in dict[id]["battles"]:
wow += i
问题是,我不确定如何一次性添加所有战斗int。 因为我收到此错误:
TypeError: 'int' object is not iterable
我将如何修复它,以便在dict中进行所有战斗!
1楼
这是你想要的吗?
wow = 0
for id in dict:
wow += dict[id]["battles"]
必要时进行说明: dict[id]["battles"]
已返回int值。
您试图遍历没有意义的int。
2楼
这是这个问题的重复:
键只是一个变量名。
for key in d:
只会循环遍历字典中的键,而不是键和值。 要遍历键和值,可以使用以下命令:
对于Python 2.x:
for key, value in d.iteritems():
wow += value["battles"]
对于Python 3.x:
for key, value in d.items():
3楼
问题在于dict[id]['battles']
是int类型的对象,因此这就是您收到错误TypeError: 'int' object is not iterable
的原因TypeError: 'int' object is not iterable
。
您可以通过以下方法解决它:
wow = 0
for key in dict:
wow += dict[key]['battles']
或者,您甚至可以通过使用Python理解来简化代码:
wow = sum(dict[key]['battles'] for key in dict)