/ /変数名に基づいて展開-python、python-2.7、python-3.x

変数名に基づいて展開する - python、python-2.7、python-3.x

次のような辞書をアンパックしたい:

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、 等々。 技術的には関数またはクラス内でこれを行うことができますが、それはさらに悪いことです。