Skip to main content
 首页 » 编程设计

Python之将列表中的项目设置为字典值列表

2025年05月04日13zhujiabin

给定列表:

links = [ 'link1', 'link2', 'link3', 'link3', 'link4', 'link5', 'link6', 'link6', 'link7', 'link8', 'link9', 'link10'] 

和这个 dicts 列表:

 sources =  [{'src': ''}, {'src': ''}, {'src': ''}, {'src': ''}, {'src': ''}, {'src': ''}, {'src': ''}, {'src': ''}, {'src': ''}, {'src': ''}] 

我想将每个 src 值设置为其对应的链接,如下所示:

{'src': 'link1'}, {'src': 'link2'}...

我试过:

for s in sources: 
    for l in links: 
        s['src'] = l 
        print (s) 

但是这个工作做了 10 次,我只想让它完成一次。

我怎样才能用一行代码实现这一目标?

请您参考如下方法:

我假设 src 指令中还有其他内容,否则 sources 将毫无意义:

for src, link in zip(sources, links): 
    src['src'] = link 

可以把它写成一行:

[s.update({'src': x }) for s, x in zip(sources, links)] 

但这将是所谓的“有副作用的理解”,并且被大多数 pythonista 认为是低级趣味。循环更像 pythonic。

以上还假设 len(sources)==len(links) 否则考虑:

for src, link in zip(sources, itertools.cycle(links)): 
    src['src'] = link 

这将以循环方式填充链接。

如果这些 src 字典实际上是空的,则无需保留它们的列表,只需从头开始创建即可:

 sources = [{'src': x} for x in links]