我有這個列表。將幾個值的元組列表轉換爲Python中的字典
List1 = [(1L, 'Jack', 129L, 37L), (2L, 'Tom', 231L, 23L)]
我想將它轉換成看起來像這樣的字典;
Dict1 = {'1L': [('Jack', 129L, 37L)], '2L': [('Tom', 231L, 23L)]}
我試圖Dict1 = dict(List1)
但得到的東西,如一個錯誤「字典更新序列元素#0的長度爲XX ......」
這怎麼能在Python做呢?我正在使用Python 2.7
+1的字典理解,這可能是Python 2.7中最好的解決方案。在Python 3中,如果值不是列表而是元組無關緊要,那麼您也可以在'{x:xs for x,* xs in List1}'中執行。 – lvc
@Ivc - 哦,有趣。我以前沒見過使用'*'語法。如果列表中只有一個元素,它是否與切片行爲不同? –
不,假設RHS對象上的一個切片返回列表'a,* b = [1]'給出a = 1和b = []。 'a,b,* c = [1]'給出'ValueError'。所有沒有明星的變量都會按照正常的迭代解包進行解壓縮(除了星號之後的任何*被分配給* last * RHS項目),然後已加星標的變量將得到所有其餘元素的列表。與切片相比,主要區別在於它使用迭代器協議,星號保證是一個列表 - 所以它更像是使用'list(islice(RHS,1,None))'。 – lvc