Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 20, 2011 22:14:08

Karnaval
От:
Зарегистрирован: 2011-10-17
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Суммирование значений словаря с float

Добрый день.

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

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

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

Буду рад подсказке.



Офлайн

#2 Окт. 20, 2011 22:22:35

dimabest
От:
Зарегистрирован: 2009-02-12
Сообщения: 253
Репутация: +  0  -
Профиль   Отправить e-mail  

Суммирование значений словаря с float

а где словарь? Сообщение об ошибке говорит что KRn - это число с плавающей запятой :)



Офлайн

#3 Окт. 20, 2011 23:06:14

Fibio
От:
Зарегистрирован: 2010-09-14
Сообщения: 74
Репутация: +  2  -
Профиль   Отправить e-mail  

Суммирование значений словаря с float

Напишите как вы олучаете словарь, походу у вас не словарь а одно float число



Офлайн

#4 Окт. 21, 2011 18:08:15

Karnaval
От:
Зарегистрирован: 2011-10-17
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Суммирование значений словаря с 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)

Офлайн

#5 Окт. 21, 2011 18:24:26

dimabest
От:
Зарегистрирован: 2009-02-12
Сообщения: 253
Репутация: +  0  -
Профиль   Отправить e-mail  

Суммирование значений словаря с float

total = sum(page_dict.values())
или так:
total = 0
for value in page_dict.values():
KRn = (value / 6546) * 100
total += value
print ('%.2f' % KRn,'%')



Офлайн

#6 Окт. 22, 2011 01:38:07

Karnaval
От:
Зарегистрирован: 2011-10-17
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Суммирование значений словаря с float

Добрый вечер, 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)

Офлайн

#7 Окт. 22, 2011 03:37:47

Fibio
От:
Зарегистрирован: 2010-09-14
Сообщения: 74
Репутация: +  2  -
Профиль   Отправить e-mail  

Суммирование значений словаря с float

Ваша проблема в том, что Вы конструкцией 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,'%')



Офлайн

#8 Окт. 22, 2011 15:57:19

Karnaval
От:
Зарегистрирован: 2011-10-17
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Суммирование значений словаря с float

Fibio большое спасибо, всё заработало. Поскольку у меня 3 питон, взамен P.iteritems(): использовал P.items():.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version