2016-02-24 3 views
-3

При необходимости для сравнения чисел, которые выглядят как: 12,3K, 1,84M и т.д. например:Сравните цифры в виде: 12,3K, 1,84M в питоне

a = 12,3K 
b = 1,84M 
if b > a : 
    print b 
+3

следует a и b быть строками? – depperm

+0

Вы означает '' k'' '' * 1000'' и с '' M''''' 1000000''? И используйте '' .'' вместо '', '' при определении чисел. Итак, '' a = 12.3 * 1000'' вместо '' 12,3K''? – MSeifert

+0

Напишите функцию, которая принимает строку типа «12.3K» и преобразует ее в число 12300. Функция будет смотреть на последний символ строки и преобразовать ее в 1000 для K, 1000000 для M и т. Д. Она также может иметь для обмена запятыми для периодов, если числа уже находятся в этом формате. –

ответ

2

Вы должны использовать заменить для него:

a = ("12,3K", "1,84M") 
numbers = {"K": 1000, "M": 1000000} 

result = [] 

for value in a: 
    if value: 
     i = value[-1] 
     value = float(value[:-1].replace(',', '.')) * numbers[i] 
     result.append(int(value)) 

print max(result) 

Вы можете добавить другие словари в словаря, и вы получите больше результатов.

1

Я рекомендовал бы функцию для преобразования a и b в соответствующее число, как это (и я бы сделал a и b строки:

def convert(num): 
    return num.replace(',','').replace('K','000').replace('M','000000') 

a = '12,3K' 
b = '1,84M' 
if convert(b) > convert(a) : 
    print b 
+0

Я ценю вашу попытку помочь, на самом деле я получаю список из веб-скрепок в форме: ['12 .3K ',' 234 ',' 1.84M ',' 23 '], и я хочу сравнить это с другим списком в том же form –

0

Если значения строк, то re модуль сделает легко заменить запятые '' и K или M с 3 или 6 нулями. Затем оберните в int() и сравните. Где/как вы получаете значения, которые вы сравниваете?

+0

В основном я получаю их из веб-соскабливания, например: ['12 .3K ',' 123 ',' 1.34M ',' 34 '] –

+0

, и я хочу сравнить их с другим списком в форме: ['10 .9K' , '123', '2.67M', '34'] –

Смежные вопросы