在di中循环列表

2024-03-29 08:48:46 发布

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

我对Python还不熟悉,所以请容忍我。 我有一个目录,里面有:

ophav = {'ill': ['Giunta, John'], 'aut': ['Fox, Gardner', 'Doe, John'], 'clr': ['Mumle, Mads'], 'trl': ['Cat, Fat']}

每次运行脚本时,列表中的键名('ill'、'aut'、…)和项数都会不同。你知道吗

我想做一些类似的事情:

opfmeta = []
for key, person in ophav.items():
    opfmeta.append('<dc:creator role="' + key + '">' + person + '</dc:creator>')

我知道这不起作用(“不能连接'str'和'list'对象”)—我必须在dict中循环列表。我该怎么做?你知道吗

编辑:我需要每个人单独的条目,例如:

<dc:creator role="ill">Fox, Gardner</dc:creator>
<dc:creator role="ill">Doe, John</dc:creator>

Tags: key目录列表dcjohnrolepersoncreator
1条回答
网友
1楼 · 发布于 2024-03-29 08:48:46

您可以使用' & '.join()来实现这一点:

opfmeta = []
for key, person in ophav.items():
    opfmeta.append('<dc:creator role="' + key + '">' + ' & '.join(person) + '</dc:creator>')

这将使用指定的分隔符(在本例中为' & ')将列表中的所有元素连接在一起,因此结果如下所示:

<dc:creator role="ill">Fox, Gardner & Doe, John</dc:creator>

您可以查看完整的工作演示HERE

更新问题的答案:

ophav = {'ill': ['Giunta, John'], 'aut': ['Fox, Gardner', 'Doe, John'], 'clr': ['Mumle, Mads'], 'trl': ['Cat, Fat']}

opfmeta = []
for key, person in ophav.items():
    for i in person:
        opfmeta.append('<dc:creator role="' + key + '">' + i + '</dc:creator>')

for i in opfmeta:
    print i

[OUTPUT]
<dc:creator role="ill">Giunta, John</dc:creator>
<dc:creator role="aut">Fox, Gardner</dc:creator>
<dc:creator role="aut">Doe, John</dc:creator>
<dc:creator role="clr">Mumle, Mads</dc:creator>
<dc:creator role="trl">Cat, Fat</dc:creator>

NEW DEMO

相关问题 更多 >