如何在dict中添加所有int值

时间:2017-02-16 01:31:53

标签: python int typeerror

所以,想象一下,我得到了这样一个字典:

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

问题是,我不确定如何一次性添加所有战斗。因为我收到了这个错误:

TypeError: 'int' object is not iterable

我将如何解决这个问题,以便完成所有战斗中的所有战斗!

3 个答案:

答案 0 :(得分:3)

这是你想要的吗?

wow = 0
for id in dict:
     wow += dict[id]["battles"]

必要时说明:dict[id]["battles"]已经返回int值。你试图迭代那个毫无意义的int。

答案 1 :(得分:1)

这是此问题的副本:Iterating over dictionaries using 'for' loops

键只是一个变量名。

  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():

答案 2 :(得分:1)

问题是dict[id]['battles']是int类型的对象,所以这就是你得到错误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)