为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

泛舟湖上清波郎朗 2021-09-11 18:36:23
我正在使用 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 并不总是列表中的第三个字典。有什么方法可以搜索元组并且只获取eissn ID而不使用另一个for循环(因此从O(n)到O(n^2)?预期的输出只是eissn id的单个值(在本例中为 1004-5708)我尝试将列表转换为字典,但这不起作用,因为它将每个元组视为自己的字典。谢谢!
查看完整描述

1 回答

?
繁花如伊

TA贡献2012条经验 获得超12个赞

我可能误解了问题并过于简化;但是,如果您只想从该示例输入中提取 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']


查看完整回答
反对 回复 2021-09-11
  • 1 回答
  • 0 关注
  • 265 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信