9

なぜこれが機能しないのですか?:

d["a"], d["b"] = *("foo","bar")

私が達成しようとしていることを達成するためのより良い方法はありますか?

4

3 に答える 3

17

事前に辞書を定義し、そこからd削除すると機能します。*

>>> d = {}
>>> d["a"], d["b"] = ("foo","bar")

実際、RHS ではこれらの括弧は必要ないため、これも機能します。

>>> d['a'], d['b'] = 'foo', 'bar'
于 2013-02-13T13:28:58.087 に答える
9

他の人は、辞書に解凍する方法を示しました。ただし、「より良い方法はありますか」という質問への回答として、私は次のように主張します。

d.update(a='foo',b='bar')

解析がはるかに簡単です。確かに、これは変数aと変数がある場合は機能しませんが、次を使用できます。b

d.update({a:'foo',b:'bar'})

そして、次の理由から、私はまだそのバージョンを好むと思います。

  • よりきれいに複数の行に分割できるため、複数 (>2) の値にスケールアップします。
  • どのキーがどの値に関連付けられているかがすぐにわかります

そして、あなたが示すように静的であるのではなく、値の 2 タプルから始めると、次のように使用することもできますzip:

d.update( zip(("a","b"),("foo","bar")) )

これは確かに他の2つのオプションほど良くありません...

...そして、使用できる3つの方法すべてについて説明しましたdict.update:)。

于 2013-02-13T13:40:33.627 に答える
0

それはただのタイプミス ( *) です。これは機能します(Python 2.7.3でテスト済み):

d = dict()
d["a"], d["b"] = ("foo", "bar")
于 2013-02-13T13:32:36.203 に答える