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)
しかし、これはかなりひどい振る舞いを思わ私はそれらを追加する要素が正しい位置に置かれた場合、私は非常に好むだろうつまり辞書を常にソートしておきたいのです。
ソート順を保持する場合は、優先度キューのような別のデータ構造を検討するとよいでしょう。 –
'sort'それはアルゴリズムのtimsortの仕組みのためにおそらくそれほど悪くはありません。またC言語で行われますが、' sort'のようにJohnのようなリストが代わりに –
@Chris_Randsを使うかもしれません"bisect" lib ... –