2017-10-10 113 views
0

以下嵌套/双字典理解似乎给车结果:python嵌套字典理解错误?

>>> { 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'} 

还是我在这里犯了一个概念错误?

+2

你是怎么想到呢?您不能为同一个键拥有多个值,每个新值都会替换旧值。 – jonrsharpe

+1

这是因为''dict'不能有'key'名字 –

+0

也许你想在'范围(2)}中为'{k:list('abc')''?但没有预期的产出,这只是一个猜测。 – jonrsharpe

回答

0

也许我打算这样做:

>>> { k1: { k2 : (k1,k2) for k2 in range(2) } for k1 in range(3) } 
... 
{0: {0: (0, 0), 1: (0, 1)}, 
1: {0: (1, 0), 1: (1, 1)}, 
2: {0: (2, 0), 1: (2, 1)}}