Форум сайта python.su
Добрый день.
Есть словарь. Хочу найти сумму его чисел, но числа с плавающей точкой, поэтому применить sum() не возможно. Подскажите, как быть?
fd = sum(KRn.values())
print ('%.2f' % fd)
>> AttributeError: ‘float’ object has no attribute ‘values’
без values выводится :
>>TypeError: ‘float’ object is not iterable
Буду рад подсказке.
Офлайн
а где словарь? Сообщение об ошибке говорит что KRn - это число с плавающей запятой :)
Офлайн
Напишите как вы олучаете словарь, походу у вас не словарь а одно float число
Офлайн
Прошу прощение, да, не указал код. Исправляюсь)
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
Отредактировано (Окт. 21, 2011 18:09:58)
Офлайн
total = sum(page_dict.values())
total = 0
for value in page_dict.values():
KRn = (value / 6546) * 100
total += value
print ('%.2f' % KRn,'%')
Офлайн
Добрый вечер, 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’
Печалька =(
Отредактировано (Окт. 22, 2011 01:39:01)
Офлайн
Ваша проблема в том, что Вы конструкцией 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,'%')
Офлайн
Fibio большое спасибо, всё заработало. Поскольку у меня 3 питон, взамен P.iteritems(): использовал P.items():.
Офлайн