Python: сумма определенных значений словаря - PullRequest
0 голосов
/ 19 октября 2018
dict = {'A': 71.07884,
    'B': 110
    'C': 103.14484,
    'D': 115.08864,
    'E': 129.11552,
    'F': 147.1766,
   }

name = "ABC"

for character in name:
    for key, value in dict.items():
        if key == character:
            print(value)

У меня есть словарь dict и имя строки.Теперь я хочу суммировать значения dict, равные символам имени строки.

С моим решением я просто получаю значения 71.07884, 110, 103.14484, но как я могу суммировать эти значения.

Если я попробую print (sum (value)), я получу это: TypeError: 'объект с плавающей точкой не повторяется.

Я новичок в Python :)

Ответы [ 4 ]

0 голосов
/ 19 октября 2018

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

list_name = "ADF"    
sum([value for key, value in dict.items() if key in list_name])
0 голосов
/ 19 октября 2018

Вы можете сделать это следующим образом:

mydict = {'A': 71.07884,
    'B': 110,
    'C': 103.14484,
    'D': 115.08864,
    'E': 129.11552,
    'F': 147.1766,
   }

name = "ABC"

sum(value for key, value in mydict.items() if key in name)

# 284.22368

Обратите внимание, что я переименовал ваш словарь в mydict, так как dict - встроенная функция Python, которую вы не должны использовать в качестве имени переменной,

0 голосов
/ 19 октября 2018

Вы получите эту ошибку, потому что value изменяется в соответствии с его итератором.Чтобы найти сумму, которую нужно сохранить, добавьте значения в другую переменную, а затем вызовите sum(), или вы можете добавить ее в новую переменную.

Что делает sum(), так это берет список и перебирает его.В вашем коде то, что он делает, передает текущее значение в цикле только на 1 значение.

Пример: Примечание (Есть много способов сделать это.)

name = "ABC"
sum = 0
for character in name:
    for key, value in dict.items():
        if key == character:
            print(value)
            sum = value + sum

print(sum) 
0 голосов
/ 19 октября 2018

Вы можете сделать это таким образом - сначала инициализируйте пустой список, а затем каждый раз, когда вы получаете значение в цикле, append его в список.Вы получите список [71.07884, 110, 103.14484], который можно затем суммировать.

dict = {'A': 71.07884,
    'B': 110,
    'C': 103.14484,
    'D': 115.08864,
    'E': 129.11552,
    'F': 147.1766,
   }

name = "ABC"
values = []
for character in name:
    for key, value in dict.items():
        if key == character:
            values.append(value)
sum(values)

Вывод:

sum(values)
Out[6]: 284.22368
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...