所以我有一个像这样的高分文件:
Markus:5000
Mike:3000
John:2400
我把它读到OrderdDict
:
high_scores = OrderedDict()
with open('highscores.txt') as file:
for line in file:
name, score = line.strip().split(':')
high_scores[name] = int(score)
现在,当我在字典中添加新分数时,如何对其进行排序?我想到的唯一方法是每次都用这样的东西重新创建字典:
high_scores = sorted(high_scores.items(), key=lambda x: x[1], reversed=True)
high_scores = OrderedDict(high_scores)
但这似乎是相当可怕的行为,我更喜欢将元素放入正确的位置,因为我将它们添加到字典中,即我希望始终对字典进行排序。
答案 0 :(得分:2)
OrderedDict不是高分列表的最佳结构。尝试定期的2元组列表,每次添加元素时只需sort()
。
如果您真的不喜欢显式排序,可以使用https://pypi.python.org/pypi/sortedcontainers为您完成。