2014-04-21 34 views
0

我想獲取7個MySQL查詢的輸出並將它們合併到特定字段(第一個ID)。Python合併字典從Mysql結果

我的第一個初步想法是把七個查詢的結果放到第一個字段作爲KEY的字典中,然後將其餘的值作爲VALUES。

returnDict = dict([(k[0], k[1:]) for k in output]) 

一旦我得到來自7個查詢結果到自己的日文N3 N4 N5我可以通過做它們組合成一個字典中的以下內容:

for d in (firstDict, secondDict, thirdDict, fourthDict, fifthDict, sixthDict, seventhDict): 
      for key, value in d.iteritems(): 
        dd[key].append(value) 

現在,我有唯一的問題是,當上述代碼結合了字典,它不會「分裂」原來的字典,它只會追加它們,從而創建一個相當混亂的字典。

這是什麼樣子:

6: ('blah.net', datetime.datetime(2011, 6, 23, 0, 0), 4L, 1L, datetime.datetime(2011, 6, 23, 0, 0)), ('Foo', 1L), ('Unknown Foo', 2L), (datetime.datetime(2013, 11, 14, 12, 30, 24), 'ORIGINAL CATEGORY 3') 

這就是我想要它看起來像:

6: 'blah.net', datetime.datetime(2011, 6, 23, 0, 0), 4L, 1L, datetime.datetime(2011, 6, 23, 0, 0), 'Foo', 1L, 'Unknown Foo', 2L, datetime.datetime(2013, 11, 14, 12, 30, 24), 'ORIGINAL CATEGORY 3' 

回答

0

最簡單的解決方案包括使用在數據庫方面聯合查詢。

如果你想這樣做,在Python,我會做類似

from collections import defaultdict 
dd = defaultdict(list) 
for d in (firstDict, secondDict, ...): 
    for key, value in d.items(): 
     dd[key].append(value) 
+0

我覺得一個MySQL聯盟要求每一個SELECT查詢結果有相同數量的返回的列,只刪除重複,對不對? 此外 - 你的上面的代碼幾乎是我目前正在做的。 – gleb1783