循环在dict中的列表

1 python dictionary for-loop list

我是python的新手,所以请耐心等待.我有一个包含列表的字典:

ophav = {'ill': ['Giunta, John'], 'aut': ['Fox, Gardner', 'Doe, John'], 'clr': ['Mumle, Mads'], 'trl': ['Cat, Fat']}
Run Code Online (Sandbox Code Playgroud)

每次运行脚本时,键名('ill','aut',...)和列表中的项目数将不同.

我喜欢做类似的事情:

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

我知道这是不工作("不能连接'STR’和'列表’对象") -我要遍历列表的字典莫名其妙.我怎么做?

编辑:我需要为每个人单独输入,例如:

<dc:creator role="ill">Fox, Gardner</dc:creator>
<dc:creator role="ill">Doe, John</dc:creator>
Run Code Online (Sandbox Code Playgroud)

ssh*_*124 5

你可以这样做' & '.join():

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

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

<dc:creator role="ill">Fox, Gardner & Doe, John</dc:creator>
Run Code Online (Sandbox Code Playgroud)

您可以在这里查看完整的工作演示

回答您更新的问题:

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>
Run Code Online (Sandbox Code Playgroud)

新的演示