2017-10-16 129 views
-1

我有一個嵌套列表,我從數據中得到的數據將被分解成要上傳到數據庫的部分,但必須是單獨的條目。從主嵌套列表創建多個列表

我的嵌套列表:

Master_List = [ a, [1,2,3], [1,2], d] 

但我需要將它做成六個單獨的列表,如本:

list1 = [a, 1, 1, d] 
list2 = [a, 1, 2, d] 
list3 = [a, 2, 1, d] 
list4 = [a, 2, 2, d] 
etc. 

我試圖通過列表通過列表的值迭代,但我很困惑,因爲並不是所有的主列表都會有多個值。我該如何構建這些單獨的列表以供使用?

當我試着迭代列表並創建單獨的列表時,它變成了一個複雜的混亂。

編輯:Coldspeed的解決方案正是我所需要的。現在我只是使用字典來訪問我想要的列表。

+0

嘛,搞什麼名堂你試過迄今? –

+0

我試過遍歷列表的值,但是我很困惑,因爲並不是所有的主列表都會有多個值。 –

回答

0

要做到這一點,最簡單的辦法就是使用itertools.product

from itertools import product 
out = {'list{}'.format(i) : list(l) for i, l in enumerate(product(*Master_List), 1)} 

print(out) 
{'list1': ['a', 1, 1, 'd'], 
'list2': ['a', 1, 2, 'd'], 
'list3': ['a', 2, 1, 'd'], 
'list4': ['a', 2, 2, 'd'], 
'list5': ['a', 3, 1, 'd'], 
'list6': ['a', 3, 2, 'd']} 

不幸的是,您不能在不使用字典的情況下創建可變數量的變量。如果您要訪問listX,你會訪問out字典,像這樣:

out['listX'] 
+0

我從來沒有聽說過itertools,我看了文檔,解決方案的工作原理是如何需要它,訪問列表1的第一個索引的例子現在寫成out ['list1'] [0]。 謝謝。 –

0

一個班輪將是:

lists = sum([[[Master_List[0], i, j, Master_List[3]] for i in Master_List[1]] for j in Master_List[2]], []) 
+0

我正在尋找創建多個單獨的列表,但我現在可以直接遍歷新列表'列表'。謝謝。 –