2014-11-06 91 views
1

我在數據庫列表中使用MySQLdb從我的數據庫中得到'n'個記錄。我想根據數據將列表分成不同的子列表。例如在Python中將字典的列表劃分爲子字典

col1 | col2 | col3 | col4 

data11 | data12 | data13 | data14 
data11 | data12 | data23 | data24 
data11 | data13 | data33 | data34 
data11 | data13 | data43 | data44 
data21 | data12 | data53 | data54 
data21 | data12 | data63 | data64 
data21 | data13 | data73 | data74 
data21 | data13 | data83 | data84 

我想這個數據轉換成:

col1 | col2 | col3 | col4 

1日列表:

data11 | data12 | data13 | data14 
data11 | data12 | data23 | data24 

第二列表:

data11 | data13 | data33 | data34 
data11 | data13 | data43 | data44 

第三列表:

data21 | data12 | data53 | data54 
data21 | data12 | data63 | data64 

第四列表:

data21 | data13 | data73 | data74 
data21 | data13 | data83 | data84 

有Python語言組多列和分裂清單分成多個列出任何超真棒方式。

編輯:

目前,我有:

[{ "col1":"data11","col2":"data12","col3":"data13","col4":"data14" 
}, 
... 
] 

我想這些子數據分成取決於存在於col1和COL2值的字典的列表。

您可以從上表中瞭解它。我猜輸出將是[[{}]]格式。

+0

那麼你想要將字典列表轉換爲列表的列表?你可以更新你的問題與示例python數據結構如何訪問輸出? – user3885927 2014-11-06 06:05:15

+0

@ user3885927我按照您的要求編輯了問題。 – SiMemon 2014-11-06 06:24:15

回答

1

字典使用字典:

super_awesome = {} 
for row in rows: # these are the rows from MySQLdb 
    col1 = super_awesome.get(row['col1'], {}) # get col1 or an empty dict 
    col2 = col1.get(row['col2'], [])    # get col2 or an empty list 
    col2.append(row)        # append row to (col1,col2) 
    col1[row['col2']] = col2      # put col2 into col1 
    super_awesome[row['col1']] = col1   # put col1 into super_awesome 

當你完成後,super_awesome對每個唯一col1值的條目,每個條目那些具有用於每個唯一(col1,col2)值的條目。反過來,這些條目每個都有一個(col1,col2)對的行列表。

+0

根據您的回答,我可以在[[{}]]數據類型中獲得輸出而不是{{[{}]}}嗎? – SiMemon 2014-11-06 06:55:50

+0

我會留給你的。 – 2014-11-06 15:17:06