我正在尝试对文本文件中的数据进行排序并将其显示在python中。
到目前为止,我有:
text_file = open ("Class1.txt", "r")
data = text_file.read().splitlines()
namelist, scorelist = [],[]
for li in data:
namelist.append(li.split(":")[0])
scorelist.append(li.split(":")[1])
scorelist.sort()
print (scorelist)
text_file.close()
它对数据进行排序,但是只读取第一个数字:
['0', '0', '10', '3', '3', '5']
它将10读为“ 1”
这是我的文本文件的样子:
Harry:3
Jarrod:10
Jacob:0
Harold:5
Charlie:3
Jj:0
因为scorelist
是一个字符串列表,所以"10"
出现在前面,"3"
因为in中的第一个字符"10"
小于in中的第一个字符"3"
(字典排序-如字典中的单词)。这里的技巧是告诉python对整数排序。你可以做,因为其他的答案指出,通过排序整数列表,而不是一个字符串列表,或者您可以使用key
到排序功能:
scorelist.sort(key=int)
这告诉python将项目排序为整数而不是字符串。这里的好处是您根本不需要更改数据。您仍然最终得到的是字符串列表,而不是整数列表-您只是告诉python更改其比较字符串的方式。整洁的。
演示:
>>> scorelist = ['3', '10', '0', '5', '3', '0']
>>> scorelist_int = [int(s) for s in scorelist]
>>>
>>> scorelist.sort(key=int)
>>> scorelist
['0', '0', '3', '3', '5', '10']
>>>
>>> scorelist_int.sort()
>>> scorelist_int
[0, 0, 3, 3, 5, 10]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句