0
所以我有一个高分文件是这样的:如何在推入新项目时对字典进行排序?
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)
但是,这似乎是相当可怕的行为,我会更喜欢,如果元件放置到正确的位置,因为我将它们添加到字典,即我想随时保持字典的排序。
如果您想保留排序的顺序,您可能需要考虑一个替代数据结构,如优先级队列。 –
'每次排序'可能并没有听起来那么糟糕,因为算法timsort的工作方式,也是在C中完成的,但'排序'列表像约翰建议的 –
@Chris_Rands或可能利用'bisect'库... –