如何在推送新项目时对字典进行排序?

时间:2017-09-02 22:47:10

标签: python python-3.x sorting dictionary ordereddictionary

所以我有一个像这样的高分文件:

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)

但这似乎是相当可怕的行为,我更喜欢将元素放入正确的位置,因为我将它们添加到字典中,即我希望始终对字典进行排序。

1 个答案:

答案 0 :(得分:2)

OrderedDict不是高分列表的最佳结构。尝试定期的2元组列表,每次添加元素时只需sort()

如果您真的不喜欢显式排序,可以使用https://pypi.python.org/pypi/sortedcontainers为您完成。