辞書キーの名前を変更する 質問する

辞書キーの名前を変更する 質問する

辞書のキーの名前を変更する際に、その値を新しい名前に再割り当てしたり、古い名前のキーを削除したりせずに、辞書のキー/値を反復処理せずに、辞書のキーの名前を変更する方法はありますか?

の場合にはOrderedDictキーの位置を維持しながら同じ操作を行います。

ベストアンサー1

通常の辞書の場合は、次を使用できます。

mydict[k_new] = mydict.pop(k_old)

これにより、アイテムが辞書の末尾に移動します。ただし、アイテムk_newがすでに存在する場合は、その場で値が上書きされます。

Python 3.7 以降の dict で順序を保持したい場合は、完全に新しいインスタンスを再構築するのが最も簡単です。たとえば、キーの名前を次2のように変更します'two'

>>> d = {0:0, 1:1, 2:2, 3:3}
>>> {"two" if k == 2 else k:v for k,v in d.items()}
{0: 0, 1: 1, 'two': 2, 3: 3}

の場合も同様です。OrderedDictdict 内包構文は使用できませんが、ジェネレータ式を使用できます。

OrderedDict((k_new if k == k_old else k, v) for k, v in od.items())

質問にあるように、キー自体を変更することは、キーがハッシュ可能これは通常、彼らが不変変更することはできません。

おすすめ記事