Найти - Пользователи
Полная версия: Суммирование значений словаря с float
Начало » Python для новичков » Суммирование значений словаря с float
1
Karnaval
Добрый день.

Есть словарь. Хочу найти сумму его чисел, но числа с плавающей точкой, поэтому применить sum() не возможно. Подскажите, как быть?

fd = sum(KRn.values())
print ('%.2f' % fd)

>> AttributeError: ‘float’ object has no attribute ‘values’
без values выводится :
>>TypeError: ‘float’ object is not iterable

Буду рад подсказке.
dimabest
а где словарь? Сообщение об ошибке говорит что KRn - это число с плавающей запятой :)
Fibio
Напишите как вы олучаете словарь, походу у вас не словарь а одно float число
Karnaval
Прошу прощение, да, не указал код. Исправляюсь)

page_dict = {'1':1,'2':2,'3':3}

for key in page_dict:
KRn = (page_dict / 6546) * 100
print ('%.2f' % KRn,'%')

fd = sum(KRn) #тут пытаюсь найти сумму словаря KRn
print ('%.2f' % fd)

Примечание: Забыл так же указать. Версия питона 3k
dimabest
total = sum(page_dict.values())
или так:
total = 0
for value in page_dict.values():
KRn = (value / 6546) * 100
total += value
print ('%.2f' % KRn,'%')
Karnaval
Добрый вечер, dimabest.

К сожалению не совсем помогло. Попробую объяснить проблему иначе. Задача:
Есть словарь. Нужно через цикл изменить по формуле значения в словаре в процентах (шаг 1), после чего отдельно вывести сумму его новых значений (шаг.2)

Код:
P = {'1':4341,'2':24534,'3':32222} #словарь

for value in P.values():
P = (value / 2434) * 100
print ('%.2f' % P,'%') #изменяем словарь

total = sum(P.values()) #узнаём сумму значений в славоре
print ('%.2f' % total,'%')

Выводит:
AttributeError: ‘float’ object has no attribute ‘values’

Печалька =(
Fibio
Ваша проблема в том, что Вы конструкцией P = (value / 2434) * 100 не изменяете словарь, а присваиваете имени P результат выражение, т.е. число float. Если Вам нужно менять именно значения то:
P = {'1':4341,'2':24534,'3':32222} #словарь
for k, v in P.iteritems():
P = (v / 2434) * 100
print ('%.2f' % P,'%') #изменяем словарь
total = sum(P.values()) #узнаём сумму значений в славоре
print ('%.2f' % total,'%')
Karnaval
Fibio большое спасибо, всё заработало. Поскольку у меня 3 питон, взамен P.iteritems(): использовал P.items():.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB