为什么不起作用?:
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')
更容易解析。承认,如果你有a
和b
,它们是变量,这是不起作用的,但你可以使用:
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")