嵌套字典中的Python和值

时间:2019-02-01 05:01:35

标签: python python-3.x dictionary sum

对于我的第一个实际项目,我试图创建一个在Python IDLE中运行的简单增量游戏。我遇到了一个问题,我需要获取嵌套字典中多个值的总和并卡住。

这是我正在使用的字典:

clickers = {
'': None,
'wooden_sword': {
    'owned': 5,
    'power': 1,
    'price': 5,
    },
'iron_sword': {
    'owned': 10,
    'power': 2.5,
    'price': 10,
    },
}

我想知道是否有可能仅获取owned值的和并将其保存到变量中。

wooden_sword的{​​{1}}值等于5,键owned的{​​{1}}值等于10,我想将它们相加值并将其保存到等于其解的变量中。

3 个答案:

答案 0 :(得分:1)

可以通过这种方式完成。

total = 0
for key ,value in clickers.items():
  if value and 'owned' in value.keys():
    total += value['owned']
print(total)

答案 1 :(得分:1)

我认为您需要:

sum_ = 0
for k,v in clickers.items():
    if v:        # to ignore None 
        try:     # this to avoid key error
            sum_ += v['owned']
        except:
            pass
print(sum_)

答案 2 :(得分:1)

您可以将sum函数与生成器表达式一起使用:

sum(d['owned'] for d in clickers.values() if d)

这将返回:

15