[{'name': None, 'price': None, 'shares': None},
{'name': None, 'price': None, 'shares': None},
{'name': None, 'price': None, 'shares': None},
{'name': None, 'price': None, 'shares': None},
我有一个像这样的dicts列表和3个列表,我将其压缩为一个具有值ID的列表,以便进入相应的dict。
我以为我可以通过列表并使用for循环来更新值,但最终发生的事情是每个dict都更新为值列表中的最后一项
答案 0 :(得分:1)
您可以使用您的dicts列表执行此操作。但正如cᴏʟᴅsᴘᴇᴇᴅ所说,你不需要初始化空结构。这里有两个解决方案,一个有一个,没有一个没有预先初始化。
示例数据:
names = ["Alice", "Bob", "Carol", "Eve"]
price = [1.00, 2.01, 3.02, 4.03]
shares = [10, 50, 80, 100]
data = zip(names, price, shares)
预先初始化:
frame = [{'name': None, 'price': None, 'shares': None},
{'name': None, 'price': None, 'shares': None},
{'name': None, 'price': None, 'shares': None},
{'name': None, 'price': None, 'shares': None}]
dlist = list(data)
for i, d in enumerate(frame):
for j, k in enumerate(d.keys()):
d[k] = dlist[i][j]
frame
[{'name': 'Alice', 'price': 1.0, 'shares': 10},
{'name': 'Bob', 'price': 2.01, 'shares': 50},
{'name': 'Carol', 'price': 3.02, 'shares': 80},
{'name': 'Eve', 'price': 4.03, 'shares': 100}]
没有预先初始化:
fields = ["name", "price", "shares"]
[{k:v for k, v in zip(fields, d)} for d in data]