Python:为什么我不能将元组解包到字典中?
为什么这个不管用呢?
d["a"], d["b"] = *("foo","bar")
有没有更好的方法来实现我想要的效果呢?
3 个回答
0
这只是一个打字错误(就是那个*
)。这个代码是可以工作的(在Python 2.7.3中测试过):
d = dict()
d["a"], d["b"] = ("foo", "bar")
9
其他人已经展示了如何把数据解包成字典。不过,针对你问的“有没有更好的方法”,我想说:
d.update(a='foo',b='bar')
这样解析起来简单多了。虽然确实,如果你有 a
和 b
是 变量 的话,这个方法就不适用了,但你可以用:
d.update({a:'foo',b:'bar'})
我觉得我还是更喜欢这个版本,原因有以下几点:
- 当需要处理多个(超过2个)值时,这种方式更好,因为可以更整齐地分成多行
- 它让你一眼就能看出哪个键对应哪个值
如果你一开始就用的是一个包含两个值的元组,而不是像你展示的那样是静态的,你甚至可以用 zip
:
d.update( zip(("a","b"),("foo","bar")) )
虽然这确实没有前面两个选项那么好……
……我们刚刚讨论了使用 dict.update
的三种方法 :).
19
如果你事先定义一个字典 d
,并且把那里的 *
去掉,这样就可以正常工作了:
>>> d = {}
>>> d["a"], d["b"] = ("foo","bar")
实际上,你在右边的表达式中不需要那些括号,所以这样也可以正常工作:
>>> d['a'], d['b'] = 'foo', 'bar'