【发布时间】:2017-10-10 10:59:54
【问题描述】:
以下嵌套/双字典理解似乎给出了错误的结果:
>>> { k:v for k in range(2) for v in 'abc' }
{0: 'c', 1: 'c'}
用于比较的元组:
>>> [ (k,v) for k in range(2) for v in 'abc' ]
[(0, 'a'), (0, 'b'), (0, 'c'), (1, 'a'), (1, 'b'), (1, 'c')]
与dict() 的行为相同:
>>> dict( (k,v) for k in range(2) for v in 'abc' )
{0: 'c', 1: 'c'}
或者我在这里犯了一个概念错误?
【问题讨论】:
-
您期望的是什么?同一个键不能有多个值,每个新值只是替换旧值。
-
这是因为,
dict不能有相同的key名称 -
也许你想要
{k : list('abc') for k in range(2)}?但是没有预期的输出,这只是一个猜测。 -
你犯了一个概念上的错误。字典不能有重复的键,元组没有键
-
哦,这很有道理!傻我!
标签: python dictionary-comprehension