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



为什么不起作用?:

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

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

如果您先定义一个字典d,然后从中删除*,它就会起作用:

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

事实上,你不需要RHS上的括号,所以这也可以:

>>> d['a'], d['b'] = 'foo', 'bar'

其他人已经展示了如何打开dict。然而,在回答你的问题"有更好的方法吗"时,我认为:

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

更容易解析。承认,如果你有ab,它们是变量,这是不起作用的,但你可以使用:

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

我想我仍然更喜欢这个版本,原因如下:

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

如果你从一个2元组的值开始,而不是像你展示的那样是静态的,你甚至可以使用zip:

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

无可否认,这不如其他两种选择好。。。

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

这只是一个拼写错误(*)。这是有效的(在Python 2.7.3中测试):

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

最新更新