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'庫... –