Python:为什么我不能将元组解压缩到字典中?

jsj*_*jsj 7 python dictionary iterable-unpacking

为什么这不起作用?:

d["a"], d["b"] = *("foo","bar")
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来实现我想要实现的目标?

Roh*_*ain 16

如果您d事先定义一个字典,并*从那里删除它,它将起作用:

>>> d = {}
>>> d["a"], d["b"] = ("foo","bar")
Run Code Online (Sandbox Code Playgroud)

实际上,您不需要RHS上的那些括号,因此这也将起作用:

>>> d['a'], d['b'] = 'foo', 'bar'
Run Code Online (Sandbox Code Playgroud)

  • 这绝对很酷(+1) - [但我仍然断言`d.update(a ='foo',b ='bar')`更好](http://stackoverflow.com/a/14854908/748858 ):) (3认同)

mgi*_*son 8

其他人已经展示了你如何打开一个词典.但是,在回答你的问题"有没有更好的方法"时,我认为:

d.update(a='foo',b='bar')
Run Code Online (Sandbox Code Playgroud)

更容易解析.Admitedtly,如果你有这不起作用a以及b它们是变量,但你可以使用:

d.update({a:'foo',b:'bar'})
Run Code Online (Sandbox Code Playgroud)

我认为我仍然喜欢这个版本,原因如下:

  • 它可以更好地扩展到多个(> 2)值,因为它可以更清晰地分成多行
  • 它使得它立即清楚哪个键与哪个值相关联

如果您从一个2元组的值开始,而不是在显示时保持静态,您甚至可以使用zip:

d.update( zip(("a","b"),("foo","bar")) )
Run Code Online (Sandbox Code Playgroud)

这肯定不如其他两个选项好......

......我们刚刚介绍了你可以使用的所有3种方法dict.update:).