@Yarior_rus

Как посчитать сумму элементов в большом вложенном словаре?

Здравствуйте.
Есть у меня вот такой вложенный словарь:
dct = {
	1: {
		1: {
			1: 111,
			2: 112,
			3: 113,
		},
		2: {
			1: 121,
			2: 122,
			3: 123,
		},
	},
	2: {
		1: {
			1: 211,
			2: 212,
			3: 213,
		},
		2: {
			1: 221,
			2: 222,
			3: 223,
		},
	},
	3: {
		1: {
			1: 311,
			2: 312,
			3: 313,
		},
		2: {
			1: 321,
			2: 322,
			3: 323,
		},
	},
}


Пробовал решить через код от другой задачи:
result = 0

for n in dct:
	for m in n.values():
		for val in m:
			result += val

print(result)


Выдаёт ошибку:

Traceback (most recent call last):
line 46, in
for m in n.values():
AttributeError: 'int' object has no attribute 'values'


Подскажите как посчитать сумму элементов в данном словаре, так как он для меня усложненным вышел.
Чтобы знать как впредь сии конструкции разбирать.
  • Вопрос задан
  • 37 просмотров
Пригласить эксперта
Ответы на вопрос 1
Mike_Ro
@Mike_Ro Куратор тега Python
Python, JS, WordPress, SEO, Bots, Adversting

Выдаёт ошибку:
Traceback (most recent call last):
line 46, in
for m in n.values():
AttributeError: 'int' object has no attribute 'values'

Метод values() у чисел? Может не стоит?
Подскажите как посчитать сумму элементов в данном словаре

А если глубина словаря изменится, опять все вложенные for переписывать? С рекурсией лучше выглядит:
def best_function(d):
    sum = 0
    for v in d.values():
        if isinstance(v, dict):
            sum += best_function(v)
        else:
            sum += v
    return sum

print(best_function(dct)) # 3906

Ну и как правильно подметил Влад Григорьев - почему отладкой кода не занимаетесь? А если задача будет сложнее, например в 100 раз, 100 вопросов зададите?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы