1. ホーム
  2. python

[解決済み] Python辞書の最後のキー

2023-05-05 17:08:53

質問

Pythonの辞書の最後のキーはどのような構文になるのかわからず困っています。私はPythonのリストのために、1つが最後を示すためにこれを言うかもしれないことを知っています。

list[-1]

また、以下のようにして、辞書のキーの一覧を得ることができることも知っています。

dict.keys()

しかし、論理的な以下のコードを使おうとすると、うまくいきません。

dict.keys(-1)

keysは引数をとれないと書いてあり、1が与えられています。もしkeysが引数をとれないのであれば、リストの最後のキーが欲しいということをどのように表せばいいのでしょうか?

私は、Pythonの辞書は、最も新しい項目を最後にして、項目が辞書に追加された順序で並べられるという仮定の下で操作しています。この理由から、私は辞書の最後のキーにアクセスしたいと思います。

辞書のキーは、それらがいつ追加されたかに基づく順序ではないと言われました。それでは、どのようにして、最も新しく追加されたキーを選択することができるのでしょうか?

どのように解決すればよいのでしょうか。

挿入順序が重要な場合、次のものを見てください。 collections.OrderedDict :

OrderedDict は、キーが最初に挿入された順番を記憶しているディクショナリーです。新しいエントリが既存のエントリを上書きする場合、元の挿入位置は変更されません。エントリを削除して再挿入すると、最後に移動します。


In [1]: from collections import OrderedDict

In [2]: od = OrderedDict(zip('bar','foo'))

In [3]: od
Out[3]: OrderedDict([('b', 'f'), ('a', 'o'), ('r', 'o')])

In [4]: od.keys()[-1]
Out[4]: 'r'

In [5]: od.popitem() # also removes the last item
Out[5]: ('r', 'o')

更新しました。

Python 3.7から辞書のキーが公式に挿入順に並べられるようになったため、OrderedDictは不要になりました(非公式には3.6から)。

これらの最近のPythonバージョンでは、代わりに単に list(my_dict)[-1] または list(my_dict.keys())[-1] .