如何在一个变量中对多个词典进行排序?

时间:2016-05-15 02:07:24

标签: python dictionary

变量highscores中有几个字典。我需要按其键值对其进行排序,而sorted()不起作用。

global highscores
f = open('RPS.txt', 'r')
highscores = [line.strip() for line in f]
sorted(highscores)
highscores = reverse=True[:5]
for line in f:
    x = line.strip()
    print(x)
f.close()

这是错误: TypeError:'bool'对象不可订阅

2 个答案:

答案 0 :(得分:0)

sorted(v)一个迭代器,按顺序返回v的每个元素;它不是一个清单。您可以在for循环中使用迭代器来一次处理一个元素:

for k in sorted(elements): ...

您可以转换每个元素并将结果存储在列表中:

v = [f(k) for k in sorted(elements)]

或者您可以将所有元素捕获到列表中。

v = list(k)

请注意,在上面的代码中,元素是文件中的字符串,而不是字典。

答案 1 :(得分:0)

以下应该做(我认为)你想要的事情:

with open('RPS.txt', 'r') as f:  # will automatically close f
    highscores = [line.strip() for line in f]

highscores = sorted(highscores, reverse=True)[:5]
for line in highscores:
    print(line)

主要问题是您使用sorted()的方式。并且,最后,而不是尝试再次迭代文件的行(这将无法工作,因为文件不是列表,不能任意迭代)上面的代码做的是排序行读取从文件中获取该列表的前5个,该列表保存在highscores中。然后它打印出来。没有必要再次删除行,这是在首次读取文件时处理的。