私はユニークな値を持つ辞書を持っており、それを逆にしたい(つまり、値を持つスワップキー)inplaceです。 別の辞書を使用せずにこれを行う方法はありますか?辞書をインプレースに置き換える
id(my_dict)
が同じままであるように、新しい辞書を使用するよりも、辞書内の項目を操作する方が好きです。
私はユニークな値を持つ辞書を持っており、それを逆にしたい(つまり、値を持つスワップキー)inplaceです。 別の辞書を使用せずにこれを行う方法はありますか?辞書をインプレースに置き換える
id(my_dict)
が同じままであるように、新しい辞書を使用するよりも、辞書内の項目を操作する方が好きです。
:
あなたはこのようにそれを行うことができます
dictionary = {value: key for key, value in dictionary.items()}
:あなたはむしろ代わりに、辞書の理解の構文を使用する場合は、この行を書くことができ
dictionary = dict(map(reversed, dictionary.items()))
:コードの
あなたが辞書のitems
方法を使用しない場合、避けることが比較的容易である:
dictionary = {dictionary[key]: key for key in dictionary}
あなたが辞書のコピーを作成する余裕があれば、必要であれば、あなたの場所でそれを逆にすることができます:
def reverse_in_place(dictionary):
reference = dictionary.copy()
dictionary.clear()
dictionary.update(map(reversed, reference.items()))
私はキーとdictの値を交換したいと思いますか?あなたがキーと値を交換すると、キーの競合を作成し、重複する値を気にしないしようとしている場合、あなたは、単一の行ではなく、簡単に辞書を「逆転」することができます
dict_name = dict(zip(dict_name.values(), dict_name.keys()))
Pythonの「dict」は順序付けられていません。あなたはそれを逆転させることによって何を意味するのか説明する必要があります。 – Drop
また、「インプレース」はどのように機能すると思いますか?古い辞書変数に新しい辞書を割り当てることは大丈夫ですか、または辞書内の項目を操作したいですか? – Drop
私はちょうどdictの中の項目を操作し、新しい辞書を使わないほうがいいので、id(dict)は同じままです。 – Kinor