python - 遍历字典中的列表

标签 python list for-loop dictionary

我是 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’对象”)——我必须以某种方式在字典遍历列表。我该怎么做?

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

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

最佳答案

你可以使用 ' & '.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

关于python - 遍历字典中的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23565837/

相关文章:

c# - 将类列表添加到字典 C#

c++ - 如何在 for 循环中创建具有不同名称的 vector

python - 根据条件检查修改循环

python - 如何从彩色图像创建 CMYK 半色调图像?

python - keras:ValueError:检查模型目标时出错:预期activation_1具有形状(无,60)但得到形状为(10、100)的数组

python - 通过 OpenCV 在另一个 (HDR) 中插入图像的蒙版区域

c++ - 将原始指针视为基于范围的 for 循环中的范围

python - 机器学习预测用户参与度

python - 如何在 python 中交换值?

list - 在新行中打印列表元素