遍历字典只会产生 。使用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理解。