#python #python-3.x #dictionary #for-loop #sum
Вопрос:
Используя цикл for, Вычислите сумму значений в этом словаре и не используйте функцию sum ()?
Dictionary = {"001": {"a" : [1, 5, 6], "b" : [2, 8, 9] }, "002": {"c" : [6.89, 5.67, 1.24], "d" : [9.32, 6, 78] }}
Я пытался ответить на этот вопрос многими способами, но я всегда получаю эту ошибку :
TypeError: unsupported operand type(s) for : 'int' and 'dict'
Спасибо!
Комментарии:
1. Покажите нам несколько попыток кода
2. хотите получить сумму всех чисел? или вам нужен список, содержащий суммы каждого индекса в каждом из списков номеров? (все они имеют длину 3, что заставляет меня спросить об этом)
3. Не могли бы вы поподробнее, пожалуйста
Ответ №1:
Используйте вложенный цикл в соответствии со структурой данных:
total = 0
for dct in Dictionary.values(): # the outermost dict's values are dicts again ...
for lst in dct.values(): # ... whose values are lists ...
for num in lst: # ... whose elements are addable numbers
total = num
total
# 138.12
Комментарии:
1. dicti3 = {«001»: {«a» : [1, 5, 6], «в» : [2, 8, 9] }, «002»: {«c» : [6.89, 5.67, 1.24], «d» : [9.32, 6, 78] }} всего = 0 для dct в дикти3.значения(): для lst в дикти3.значения(): для num в lst: всего = печать номера(всего) Трассировка ошибок типа (последний последний вызов) <ipython-input-26-3bf2629ab373> в <ipython-input-26-3bf2629ab373><модуль> 6 для lst в дикти3.значения(): 7 для num в lst: — — — — <модуль>> 8 всего = число 9 10 печать(всего) Ошибка типа: неподдерживаемые типы операндов для =: ‘int’ и ‘str’
2. Спасибо за ваш ответ, но я все равно получил ошибку, как показано выше
3. Вы неправильно его скопировали:
for lst in dicti3...
должно бытьfor lst in dct...
.4. Ах, я вижу, изначально в моем коде была ошибка, поэтому я его изменил. вы правы. Это сработало, спасибо.
5. так почему же общая сумма здесь отличается от приведенной ниже, которая составляет 24,67, это потому, что его метод использует только числовые значения ? Спасибо.
Ответ №2:
Я думаю, что вы пытались суммировать словарь с помощью операнда Вместо этого вам нужно получить каждое отдельное число внутри списка (напомните, что список находится внутри словаря, а этот словарь находится внутри другого). Поэтому я делаю петлю for:
Dictionary = {"001": {"a": [1, 5, 6], "b": [2, 8, 9]}, "002": {"c": [6.89, 5.67, 1.24], "d": [9.32, 6, 78]}}
for c in range(0, len(Dictionary['001'])):
l1 = Dictionary['001']['a']
l2 = Dictionary['001']['b']
som1 = l1[c] l2[c]
for c in range(0, len(Dictionary['002'])):
l1 = Dictionary['002']['c']
l2 = Dictionary['002']['d']
som2 = l1[c] l2[c]
somt = som1 som2
print(somt)
Комментарии:
1. Большое вам спасибо за вашу помощь. Это сработало
2. так почему же общая сумма здесь отличается от приведенной ниже, которая составляет 138
3. Это совсем не решает проблему. Вы продолжаете переопределять
som1
иsom2
в соответствующих циклах. Кроме того, вы зацикливаетесь на диапазонах, соответствующих длине внутреннего диктатора, которая такова2
. Следовательно, конечным результатом является сумма всех элементов второго списка:5 8 5.67 6