2016-05-18 7 views
1

変換:、各リストの最初の項目は、IDでPythonは、私は例えば、SQLクエリはリストのリストに戻ってきたPythonスクリプトを持つクエリ出力

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

その後、各項目があります各レコードに関連する属性、例えば、Colour,Type,Size,Date,Costなどである。これらは動的に(列を照会する)別のクエリの結果などから、私のSQLクエリに追加される

項目がColourなどの属性、Dateなどは、すべての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]) 

I次のコードを使用してそれをリストの辞書に入れることができましたが、コードの残りの部分については、辞書項目を参照できる方が良いでしょう。その結果

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

ありがとうございました。感謝。 – Midavalo

関連する問題