我正在将文件导入多维数组。我是根据最高得分进行反向排序-但是,当我运行代码时,当前它忽略超过100的得分-有人可以帮忙吗?
scores = []
file = open("hScores.txt","r")
for line in file:
scores.append(line.strip("\n").split(","))
scores.sort(key=lambda x: x[1])
scores.reverse()
print(scores)
答案 0 :(得分:1)
字符串以单词排序的方式排序:即使“ tesseract”是“更大的”,“ taco”也出现在“ tesseract”之前。您正在对数字进行排序,就好像它们是字符串一样,因此“ 100”位于“ 2”之前,因为“ 1”位于“ 2”之前:
s = "1,2,3,110,89,108,160,36,19"
sorted(s.split(','))
# ['1', '108', '110', '160', '19', '2', '3', '36', '89']
将它们转换为数字,您的排序将看起来更像您期望的那样:
s = "1,2,3,110,89,108,160,36,19"
n = map(int, s.split(',')) # map to ints
# now n is an iterator of numbers not strings
sorted(n)
# [1, 2, 3, 19, 36, 89, 108, 110, 160]
# or
sorted(n, reverse=True)
# [160, 110, 108, 89, 36, 19, 3, 2, 1]
答案 1 :(得分:1)
您从文件中读取的所有内容均被读取为字符串。您需要先将数字转换为整数,然后才能使用它们按预期进行比较。您只需更改以下行即可完成此操作:
scores.sort(key=lambda x: int(x[1]))