2017-10-10 89 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)}}