Python 2 从文本文件中排序
Python 2 Sorting from a text file
我正在尝试编写一个代码,让用户输入他们的分数(一个数字),然后输入他们的名字。分数和名字都存储在一个文本文件中(与 '\n' 一起存储,这样每一对新人都存储在新行中)。
hscores = open("highscores.txt", "a")
hscores.write(str(score))
hscores.write(" ")
hscores.write(nickname)
hscores.write("\n")
hscores.close()
然后,我打开文本文件,获取其中的所有输入,按从高到低排序并输出:
hscores22 = open("highscores.txt", "r")
listings2 = hscores22.readlines()
sorting2 = sorted(listings2, reverse=True)
print "| 1 | " + sorting2[0]
print "| 2 | " + sorting2[1]
print "| 3 | " + sorting2[2]
print "| 4 | " + sorting2[3]
print "| 5 | " + sorting2[4]
print "| 6 | " + sorting2[5]
print "| 7 | " + sorting2[6]
print "| 8 | " + sorting2[7]
print "| 9 | " + sorting2[8]
print "| 10 | " + sorting2[9]
问题是 python 认为以最大数字开头的数字更大,例如:90>1000、50>100(我想那是因为我必须将所有数字转换为将字符串存储在文本文件中之前)。有什么办法可以解决这个问题吗?
提前致谢。
由于您要对字符串进行排序,Python 会按字典顺序比较它们 - 因此“2”大于“1”。您需要提取字符串的数字部分,将其转换为数字并将此数字用于排序键:
sorting2 = sorted(listings2, reverse=True, key=lambda x: int(x.split()[0]))
顺便说一句,接下来的 10 行真的要求用 for 循环替换...
我正在尝试编写一个代码,让用户输入他们的分数(一个数字),然后输入他们的名字。分数和名字都存储在一个文本文件中(与 '\n' 一起存储,这样每一对新人都存储在新行中)。
hscores = open("highscores.txt", "a")
hscores.write(str(score))
hscores.write(" ")
hscores.write(nickname)
hscores.write("\n")
hscores.close()
然后,我打开文本文件,获取其中的所有输入,按从高到低排序并输出:
hscores22 = open("highscores.txt", "r")
listings2 = hscores22.readlines()
sorting2 = sorted(listings2, reverse=True)
print "| 1 | " + sorting2[0]
print "| 2 | " + sorting2[1]
print "| 3 | " + sorting2[2]
print "| 4 | " + sorting2[3]
print "| 5 | " + sorting2[4]
print "| 6 | " + sorting2[5]
print "| 7 | " + sorting2[6]
print "| 8 | " + sorting2[7]
print "| 9 | " + sorting2[8]
print "| 10 | " + sorting2[9]
问题是 python 认为以最大数字开头的数字更大,例如:90>1000、50>100(我想那是因为我必须将所有数字转换为将字符串存储在文本文件中之前)。有什么办法可以解决这个问题吗? 提前致谢。
由于您要对字符串进行排序,Python 会按字典顺序比较它们 - 因此“2”大于“1”。您需要提取字符串的数字部分,将其转换为数字并将此数字用于排序键:
sorting2 = sorted(listings2, reverse=True, key=lambda x: int(x.split()[0]))
顺便说一句,接下来的 10 行真的要求用 for 循环替换...