我正在使用 API 從以 JSON 格式返回的數(shù)據(jù)庫中獲取結(jié)果。然后我試圖只提取某些鍵/值并將它們附加到一個空白列表中。我想要的字段是 eissn 并且 API 返回這樣的結(jié)果:[{'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 返回的結(jié)果數(shù)。問題是 eissn ID 并不總是列表中的第三個字典。有什么方法可以搜索元組并且只獲取eissn ID而不使用另一個for循環(huán)(因此從O(n)到O(n^2)?預(yù)期的輸出只是eissn id的單個值(在本例中為 1004-5708)我嘗試將列表轉(zhuǎn)換為字典,但這不起作用,因為它將每個元組視為自己的字典。謝謝!
1 回答

繁花如伊
TA貢獻2012條經(jīng)驗 獲得超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']
添加回答
舉報
0/150
提交
取消