簡體   English   中英

組合 3 個列表以創建字典列表

[英]Combining 3 lists to create a list of dictionaries

我正在嘗試找出獲取以下 3 個列表的最佳方法:

name_list = ["potatoes", "milk", "butter"]
quant_list = [500, 200, 40]
unit_list = ["g", "ml", "g"]

並將它們轉換為字典列表,格式如下:

target_list = [{"name": "potatoes", "quant_units": {"amount": 500, "unit": "g"}}, {"name": "milk", "quant_units": {"amount": 200, "unit": "ml"}}, {"name": "butter", "quant_units": {"amount": 40, "unit": "g"}}]

我真的很難弄清楚這樣做所需的方法和循環。

任何指針將不勝感激!

您可以使用zip

res = []
for (a, b, c) in  zip(name_list, quant_list, unit_list):
    res.append({'name': a, 'quant_units': {'amount':b, 'unit':c}})
print(res)

輸出:

[{'name': 'potatoes', 'quant_units': {'amount': 500, 'unit': 'g'}}, {'name': 'milk', 'quant_units': {'amount': 200, 'unit': 'ml'}}, {'name': 'butter', 'quant_units': {'amount': 40, 'unit': 'g'}}]

嘗試這個:

name_list = ["potatoes", "milk", "butter"]
quant_list = [500, 200, 40]
unit_list = ["g", "ml", "g"]
ans = []
for i,j,k in zip(name_list, quant_list, quant_list):
    ans.append({'name':i,'quant':j,'unit':k})
print(ans)

輸出:

[{'name': 'potatoes', 'quant': 500, 'unit': 500}, {'name': 'milk', 'quant': 200, 'unit': 200}, {'name': 'butter', 'quant': 40, 'unit': 40}]

您還可以使用列表理解,這將使其成為單行符,並且通常是 python 中非常酷的概念

name_list = ["potatoes", "milk", "butter"]
quant_list = [500, 200, 40]
unit_list = ["g", "ml", "g"]

[{'name': f'{food}', 'quant_units': {'amount': amount, 'unit': unit}}
for food, amount, unit in zip(name_list, quant_list, unit_list)]

輸出:

[{'name': 'potatoes', 'quant_units': {'amount': 500, 'unit': 'g'}},
 {'name': 'milk', 'quant_units': {'amount': 200, 'unit': 'ml'}},
 {'name': 'butter', 'quant_units': {'amount': 40, 'unit': 'g'}}]

你可以使用這個:

name_list = ["potatoes", "milk", "butter"]
quant_list = [500, 200, 40]
unit_list = ["g", "ml", "g"]

lst = []

for n, q, u in zip(name_list, quant_list, unit_list):
    lst.append({'name': n, 'quant_units': {'amount': q, 'unit': u}})

print(lst)

輸出:

[{'name': 'potatoes', 'quant_units': {'amount': 500, 'unit': 'g'}}, {'name': 'milk', 'quant_units': {'amount': 200, 'unit': 'ml'}}, {'name': 'butter', 'quant_units': {'amount': 40, 'unit': 'g'}}]

如果您有相同數量的列表項,您也可以將其用作替代解決方案:

list_dict = []
for i in range(len(name_list)):
    list_dict.append({'name':name_list[i], 'qaunt_list':{'amount':quant_list[i], 'unit':unit_list[i]}})

輸出:

[{'name': 'potatoes', 'qaunt_list': {'amount': 500, 'unit': 'g'}},
 {'name': 'milk', 'qaunt_list': {'amount': 200, 'unit': 'ml'}},
 {'name': 'butter', 'qaunt_list': {'amount': 40, 'unit': 'g'}}]
       

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM