我有一個列和記錄串列,這些列和記錄是通過使用 boto3 的 DATA-API RDS execute_statement 獲得的。由于 api 的回應方式,很難以 psycopg2 RealDictCursor 格式獲取資料以插入到另一個資料庫中。我想要做的如下圖所示。
columns = ["a","b","c"]
records = [[1,2,3],[4,5,6]]
我想將其轉換為代表它的字典
[{"a":1,"b":2,"c":3},{"a":4,"b":5,"c":6}]
uj5u.com熱心網友回復:
像這樣做:
Python 3.8.9 (default, Aug 3 2021, 19:21:54)
[Clang 13.0.0 (clang-1300.0.29.3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> columns = ["a","b","c"]
>>> records = [[1,2,3],[4,5,6]]
>>> [dict((a,b) for a,b in zip(columns,rec)) for rec in records]
[{'a': 1, 'b': 2, 'c': 3}, {'a': 4, 'b': 5, 'c': 6}]
>>>
uj5u.com熱心網友回復:
您還可以使用 dict comprehension list comprehension(可能比 更直觀dict()):
out = [{col: val for col, val in zip(columns, values)} for values in records]
輸出:
[{'a': 1, 'b': 2, 'c': 3}, {'a': 4, 'b': 5, 'c': 6}]
uj5u.com熱心網友回復:
您可以更有效地執行以下操作:
result = [dict(zip(columns, record)) for record in records]
這里發生的事情是我們將回圈遍歷記錄中的每個內部串列,這些記錄與列一樣具有 3 個專案。然后我們執行zip()將兩個長度相等的串列轉換為類似于稱為 的元組串列的內容namedtuple,例如,[(a, 1), (b, 2), (c, 3)]對于第一個用列壓縮的記錄。然后將其轉換為字典并存盤在結果串列中。這對記錄中的每個專案都進行。希望這能讓你清楚。
此外,這應該比運行兩個 for 回圈更有效。可以通過使用一些高級 python 模塊進一步優化此操作。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/388172.html
標籤:Python psycopg2 aws-rds-data-service
