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

2024-06-25 23:30:56 发布

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

给定list

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次,我只想做一次。你知道吗

我怎样才能做到这一点与一个班轮?你知道吗


Tags: insrcforlinkslistsourceslink1link2
3条回答

我可不想在这儿坐一班车。简单的for循环是最好的:

>>> for d,link in zip(sources, links):
...     d['src'] = link
>>> print(sources)
[{'src': 'link1'}, {'src': 'link2'}, {'src': 'link3'}, {'src': 'link3'}, {'src': 'link4'}, {'src': 'link5'}, {'src': 'link6'}, {'src': 'link6'}, {'src': 'link7'}, {'src': 'link8'}]

我假设在src字典里还有别的东西,否则sources就没什么意义了:

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

可以将其写成一行:

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

但这将是一个所谓的“理解与副作用”,并认为大多数Python坏味道。循环更像是Python。你知道吗

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

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

以循环方式填充链接。你知道吗

如果这些srcdict实际上是空的,则不需要保留它们的列表,只需从头开始创建:

 sources = [{'src': x} for x in links]
links = [ 'link1', 'link2', 'link3', 'link3', 'link4', 'link5', 'link6', 'link6', 'link7', 'link8', 'link9', 'link10']

sources = [dict(src = ln) for ln in links]
print sources

[{'src': 'link1'}, {'src': 'link2'}, {'src': 'link3'}, {'src': 'link3'}, {'src': 'link4'}, {'src': 'link5'}, {'src': 'link6'}, {'src': 'link6'}, {'src': 'link7'}, {'src': 'link8'}, {'src': 'link9'}, {'src': 'link10'}]

print map(lambda v: dict(src = v), links)

或者

# for python 3
print (list(map(lambda v: dict(src = v), links)))

[{'src': 'link1'}, {'src': 'link2'}, {'src': 'link3'}, {'src': 'link3'}, {'src': 'link4'}, {'src': 'link5'}, {'src': 'link6'}, {'src': 'link6'}, {'src': 'link7'}, {'src': 'link8'}, {'src': 'link9'}, {'src': 'link10'}]

相关问题 更多 >