2016-11-06 5 views
-1

Im делает гистограмму из файла, и я получил ее работу, однако ее не сортировка их правильно. Значение 100 90 50 и т.д.Моя программа не сортируется правильно

Вот мой код:

from collections import Counter 
data=[] 
with open("data.txt", 'r') as f: 
    for line in f: 
    line = line.strip() 
    data.append(str(line)) 

counts = Counter(data) 

for key, size in sorted(counts.items()): 
    print('{}: {}'.format(key, int(size) * '*')) 

Это выход:

100: ****** 
25: ** 
50: *** 
60: * 
65: * 
70: ** 
75: * 
80: **** 
85: **** 
90: *** 

Любые предложения ??

EDIT:

Что я имею в виду, что они идут численно в порядке. Так что insted из 100, 25, 50, .... Я хочу это 100, 90, 85, .....

+0

, который выглядит отсортирован мне – njzk2

+0

, что я имею в виду, что идти численно в порядке. Так что insted из 100, 25, 50, .... Я хочу это 100, 90, 85, ..... –

+0

вы сортируете по кортежу, первый элемент кортежа - это «ключ», ключ - строка, это алфавитный порядок. Вам нужно проанализировать строку как число, если вы хотите иметь порядковый номер. – njzk2

ответ

0

njzk2 абсолютно прав, спасибо! Один из способов сделать это, как это:

... 
line = line.strip() 
# casting to 'int' type just before populating in data table.. 
data.append(int(line)) 
... 

тогда, вы можете

... 
# applying reversed to reorder from ascending order to descending order. 
for key, size in sorted(counts.items(), reverse=True): 
... 
Смежные вопросы