【问题标题】:How to add all int values in a dict如何在dict中添加所有int值
【发布时间】:2017-07-04 22:22:42
【问题描述】:

所以,想象一下我有一个这样的字典:

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

我将如何解决它,以便在字典中进行所有战斗!

【问题讨论】:

  • sum(x['battles'] for x in dict)
  • 以防万一这实际上在您的真实代码中。避免使用dict 来实际存储您的字典。 dict 是一个用于创建字典的内置函数。

标签: python int typeerror


【解决方案1】:

这是你想要的吗?

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

如有必要,请说明:dict[id]["battles"] 已返回 int 值。你试图迭代那个没有意义的 int。

【讨论】:

  • 解释他们做错了什么。这将帮助 OP 更多地了解他们做错的原因。
  • 天哪,你的才华横溢。
  • 把它放在你的答案中。让它更完整。
【解决方案2】:

这是这个问题的重复:Iterating over dictionaries using 'for' loops

key 只是一个变量名。

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

【讨论】:

  • 鉴于他们根本不需要密钥,itervalues()/values() 会更直接。
【解决方案3】:

问题在于 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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-17
    • 2017-01-24
    相关资源
    最近更新 更多