2012-06-05 6 views
6

У меня проблема, которая действительно сводит меня с ума. Обычно int(20.0) приведет к 20. Все идет нормально. Но:python float to in int conversion

levels = [int(gex_dict[i]) for i in sorted(gex_dict.keys())] 

пока gex_dict[i] возвращает поплавок, например. 20.0, приводит:

"invalid literal for int() with base 10: '20.0'" 

Я только один шаг от жевал последний кусок моей клавиатуры.

+1

Вы можете разместить тип контента, который вы имеете в 'gex_dict'. Я думаю, у вас есть строки, которые выглядят как float вместо floats. – jamylak

+0

Привет, Джамилак, да, вы правы, это были струны вместо поплавков, спасибо! – langohrschnauze

ответ

14

'20.0' - это строка, а не float; вы можете указать одиночные кавычки в сообщении об ошибке. Вы можете получить int из него первый разбор его с float, а затем усечения ее int:

>>> int(float('20.0')) 
20 

(Хотя, может быть, вы хотите сохранить поплавки вместо строк в словаре, так как это то, что вы похоже, ожидают.)

+1

+1 за предложение исправить проблему у источника. – Junuxx

+0

Эй, спасибо вам обоим очень !!! (это было быстро !!!) – langohrschnauze

2

Похоже, что значение представляет собой строку, а не поплавок. Так что вам нужно int(float(gex_dict[i]))

1

Проблема заключается в том, что у вас есть строка, а не поплавок, видят в этом сравнении:

>>> int(20.0) 
20 
>>> int('20.0') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ValueError: invalid literal for int() with base 10: '20.0' 

Вы можете обойти эту проблему, необходимо сначала преобразовать плавать, а затем в целое:

>>> int(float('20.0')) 
20 

Так было бы в вашем случае:

levels = [int(float(gex_dict[i])) for i in sorted(gex_dict.keys())] 
2

это л ooks, как проблема, состоит в том, что gex_dict[i] фактически возвращает строковое представление поплавка '20.0'. Хотя int() имеет возможность отбрасывать из float в int и строковое представление целого числа в int. Он не имеет возможности отбрасывать из строкового представления float в int.

Документация для междунар можно найти здесь: http://docs.python.org/library/functions.html#int