次のような辞書をアンパックしたい:
one, two, three, four = unpack(this_dict)
どこで
this_dict = {"one": 1, "two": 2, "three": 3, "four": 4}
私の唯一の問題は unpack
割り当てられる名前を知る必要があります。これをPythonでどのように行いますか?ありがとうございました
回答:
回答№1は5命令は順序付けられていないため、キーを使用する必要がある特定の順序でアンパックする場合は、アクセスするキーを渡す関数を作成できます。
from operator import itemgetter
def unpack(d, *args):
return itemgetter(*args)(d)
one, two, three, four = unpack(this_dict, "one" ,"two" ,"three" ,"four")
print(one, two, three, four)
またはマップを使用して:
def unpack(d, *args):
return map(d.get, args)
one, two, three, four = unpack(this_dict, "one" ,"two" ,"three" ,"four")
print(one, two, three, four)
2つの違いは最初のだろう存在しないキーを渡した場合、KeyErrorを返します。後者は、不足しているキーに対して変数をNoneに設定しますので、注意してください。
回答№2の場合は3
絶対にこれを行うべきではありません。ただし、モジュールレベルのスコープにいる場合は、辞書を追加できます。 globals()
.
this_dict = {"one": 1, "two": 2, "three": 3, "four": 4}
globals().update(this_dict)
print one, two, three, four
# 1 2 3 4
辞書に次のようなキーが含まれている場合、このアプローチは危険です。 list
, int
, False
、 等々。 技術的には関数またはクラス内でこれを行うことができますが、それはさらに悪いことです。