在存储在dict列表中的dict中插入新值

2024-04-19 00:13:18 发布

您现在位置:Python中文网/ 问答频道 /正文

[{'name': None, 'price': None, 'shares': None},
 {'name': None, 'price': None, 'shares': None},
  {'name': None, 'price': None, 'shares': None},
  {'name': None, 'price': None, 'shares': None},

我有一个这样的dict列表和3个我压缩成一个列表的列表,其中包含Id想要放入相应dict的值

我想我可以遍历这个列表并使用for循环来更新值,但最终的结果是,每个dict都会更新到值列表中的最后一项


Tags: namenoneid列表forpricedictshares
1条回答
网友
1楼 · 发布于 2024-04-19 00:13:18

你可以用你的字典列表来做这个。但是正如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]

相关问题 更多 >