我正在使用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)
我尝试将列表转换为字典,但这没有用,因为它将每个元组视为自己的字典。谢谢!
答案 0 :(得分: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']