2016-05-18 50 views
1

我有一個python腳本,有一個SQL查詢返回到列表的列表,如:Python的轉換查詢輸出

result = [ ['12345', 'Red', 'House', 150, '18/05/2016', 27.3], 
      ['34534', 'Blue', 'Car', 500, '22/12/2015', 587.52] ] 

每個列表中的第一項是ID,那麼每個產品的每個記錄相關的屬性,例如Colour,Type,Size,Date, Cost

的項目屬性,如ColourDate等是每個SQL查詢的運行可能不同,因爲這些都是動態添加到另一個查詢結果(該查詢列)我的SQL查詢例如:

columns = {'RecID': 'RecordID', 'Color': 'Colour', 'Type': 'Type', 'Size': 'Size', 'PurchaseDate': 'Date', 'PurchaseCost': 'Cost'} 

newQueryFields = "[UniqueID]" 
for x in columns: 
    newQueryFields = "{}, [{}]".format(newQueryFields, columns[x]) 

我已經設法使用下面的代碼把它變成一個列表字典,但是對於其餘代碼(但還沒有寫入),如果我可以參考字典項目會更好。

newResult = dict() 
for rec in result: 
    newResult[rec[0]] = rec 

導致:

result = {'12345': ['12345', 'Red', 'House', 150, '18/05/2016', 27.3], 
      '34534': ['34534', 'Blue', 'Car', 500, '22/12/2015', 587.52] } 

但是我試圖得到的結果爲字典詞典(我想?),但我不能讓我圍繞如何構建我的頭代碼輸出:

newResult = {'12345': {'ID': '12345', 'Colour': 'Red', 'Type': 'House', 'Size': 150, 'Date': '18/05/2016', 'Cost': 27.3}, 
      '34534': {'ID': '34534', 'Colour': 'Blue', 'Type': 'Car', 'Size': 500, 'Date': '22/12/2015', 'Cost': 587.52} } 
+0

字段的順序是否總是相同? – AKS

+0

查詢的結果將始終以查詢順序輸出字段。字段順序不是問題,但由於字段名稱是動態的,它們可以是任何順序的字段。 – Midavalo

回答

2

這是給你,如果你此前已經與你columns你可以做一個想法:

columns = ['ID', 'Colour', 'Type', 'Size', 'Date', 'Cost'] 
newResult = {rec[0]: dict(zip(columns, rec)) for rec in result} 

顯然,您需要首先獲得columns,它們會在您的情況下動態添加。

+0

因此,如果我可以將我的列放入列表中,我應該能夠將它傳遞給newResult,因爲結果應該是相同的順序。謝謝,我會試一試 – Midavalo

+0

太好了,讓我們知道這裏是否有效。 – AKS

+1

謝謝AKS,這正是我需要的。讚賞。 – Midavalo