2016-11-06 79 views
-1

我从一个文件制作一个直方图,然后我得到它的工作,但它没有正确排序它们。含义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: *** 

任何建议?

编辑:

我的意思是,他们去按数字顺序。因此,我想100,25,50,....我想100,90,85,.....

+0

看起来排序以我 – njzk2

+0

我的意思是,为了数字上走。所以我想要100,25,50,....我要100,90,85,..... –

+0

你排序在元组上,元组的第一项是“key”,关键是字符串,这是一个字母顺序。如果你想要一个数字顺序,你需要将字符串解析为一个数字。 – 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): 
...