我在Python2.7
和中找到了以下有关dict理解的堆栈溢出文章Python 3+
:在Python中用列表理解创建字典,说明我可以像这样应用字典理解:
d = {key: value for (key, value) in sequence}
我在Python 3中尝试过。但是,它引发了一个异常。
d = {'a':1, 'b':2, 'c':3, 'd':4}
{key : value for (key, value) in d}
{key : value for key, value in d}
两种版本都提出了ValueError
这样的说法ValueError: need more than 1 value to unpack
。
在Python3中进行字典理解的最简单/最直接的方法是什么?
遍历字典只会产生键。使用d.items()
循环遍历键和值:
{key: value for key, value in d.items()}
ValueError
您看到的异常不是dict理解问题,也不限于Python 3。您会在Python 2或常规for
循环中看到相同的问题:
>>> d = {'a':1, 'b':2, 'c':3, 'd':4}
>>> for key, value in d:
... print key, value
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: need more than 1 value to unpack
因为每次迭代仅产生一项。
如果不进行转换,{k: v for k, v in d.items()}
则只是冗长而昂贵的d.copy()
;仅当您对键或值进行更多操作,使用条件或更复杂的循环构造时,才使用dict理解。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句