【问题标题】:Looping over a list within a dict循环遍历字典中的列表
【发布时间】:2014-06-27 06:22:57
【问题描述】:

我是 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' 对象”) - 我必须以某种方式循环列表 within dict。我该怎么做?

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

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

【问题讨论】:

    标签: python list for-loop dictionary


    【解决方案1】:

    您可以使用' &amp; '.join()

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

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

    <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

    【讨论】:

    • 抱歉,我不清楚 - 我需要为每个人单独输入,例如“Fox, GardnerDoe, John
    • @Infonauten,啊,我明白了。我会更新我的答案。请等待几分钟
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-31
    • 2020-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多