Суммарные значения Python во вложенных словарях - PullRequest
0 голосов
/ 01 февраля 2019

Для моего первого настоящего проекта я пытаюсь создать простую добавочную игру, которая работает в Python IDLE.Я столкнулся с проблемой, когда мне нужно получить сумму нескольких значений во вложенных словарях, и я застрял.

Вот словарь, с которым я работаю:

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

ЯИнтересно, можно ли получить сумму только из значений owned и сохранить ее в переменной.

Значение ключа wooden_sword 'owned равно 5, а значение ключа iron_sword 'owned значение равно 10, я хотел бы суммировать эти значения и сохранить их в переменной, равной их решению.

Ответы [ 3 ]

0 голосов
/ 01 февраля 2019

Я думаю, вам нужно:

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_)
0 голосов
/ 01 февраля 2019

Вы можете использовать функцию sum с выражением генератора:

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

Возвращает:

15
0 голосов
/ 01 февраля 2019

Это можно сделать таким образом.

total = 0
for key ,value in clickers.items():
  if value and 'owned' in value.keys():
    total += value['owned']
print(total)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...