首页 文章

Python有效地从字典列表中获取特定值

提问于
浏览
0

我正在使用API从以JSON格式返回的数据库中获取结果 . 然后我尝试提取某些键/值并将它们附加到空白列表中 . 我想要的字段是eissn,API返回如下结果:

[
{'type': 'doi', 'id': '10.16472/j.chinatobacco.2017.045'}, 
{'type': 'pissn', 'id': '1004-5708'}, 
{'type': 'eissn', 'id': '1004-5708'}
]

我想提取我尝试使用此代码的eissn id:

deissnlist = []
for i in range(0,lengthD):
    deissnlist.append(doajresult[i]['bibjson']['identifier'][3] 
    ['id'])

其中lengthD / i是从API返回的结果数 . 问题是,eissn ID并不总是列表中的第3个字典 . 有没有什么方法可以搜索元组,只获得eissn ID而不使用另一个for循环(因此从O(n)到O(n ^ 2)?预期的输出只是eissn id的单个值(在这种情况下1004-5708)

我尝试将列表转换为字典,但这不起作用,因为它将每个元组视为自己的字典 . 谢谢!

1 回答

  • 1

    我可能误解了问题并简化了;但是,如果您只想从该示例输入中提取ID列表,我就是这样做的:

    input = [
        {'type': 'doi', 'id': '10.16472/j.chinatobacco.2017.045'},
        {'type': 'pissn', 'id': '1004-5708'},
        {'type': 'eissn', 'id': '1004-5708'}
    ]
    
    result = [x.get('id') for x in input]
    
    print(result)
    
    ['10.16472/j.chinatobacco.2017.045', '1004-5708', '1004-5708']
    

    或者只是类型为eissn的ID:

    result = [x.get('id') for x in input if x.get('type') == 'eissn']
    

相关问题