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")) )

诚然,这不如其他两个选项好...

...而且我们刚刚介绍了您可以使用的所有 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 回答