2016-12-19 8 views
0

PythonでES6型オブジェクトの構造を解除するにはどうすればよいですか?Python割り当ての破棄

dictionary = {} 

dictionary['a'] = 'hello' 
dictionary['b'] = 'goodbye' 

print dictionary 

a, b = [dictionary] 

print a, b 

どうすれば印刷できますかhello goodbye

+1

技術的に言えば、コンパイラはLHSの名前を気にしないので、できません。 –

+0

あまりにも悪いですが、本当に素晴らしいES6の機能です。あなたが答えたら、私はそれを受け入れるよ、ありがとう。 – Antoine

+1

@ cricket_007 OPは変数「a」を辞書のキー「a」の値にバインドすることを望んでいます。 – DyZ

答えて

0

exec()でオブジェクトの破棄を模倣できます。

[exec("global %s; %s=%s" % (var,var,repr(val))) 
       for var,val in dictionary.items() if var.isidentifier()] 

print(a) 
#hello 

便宜上、あなたはすべて専門的に非表示にする関数を書くことができます。

def destructure(d): 
    [exec("global %s; %s=%s" % (var,var,repr(val))) 
       for var,val in d.items() if var.isidentifier()] 
2

あなたは自分のキーでdictionaryの設定値を抽出する必要があります

dictionary = {} 

dictionary['a'] = 'hello' 
dictionary['b'] = 'goodbye' 

print dictionary 

a, b = dictionary['a'], dictionary['b'] 

print a, b 

辞書」doesnのキーと値の順序を維持しないでください。これは、辞書のキーや値の順序付けされた結果が必要な場合は、覚えておく必要があることを意味します。

+0

一致する識別子と辞書キーを自動化することがポイントです。 – DyZ

+0

@DYZしかし、それができないのであれば、代替手段を与えてみませんか? OPが何を求めているかは、単に不可能です。可能な代替案を提示する回答を投稿すると、IMOは解決策を提供するものと同じくらい有効です。 –

+0

私はそれが可能だと思う(以下の私の答えを参照)。 – DyZ

関連する問題