如何从 Python 中的“dict”对象列表中基于键提取值
Posted
技术标签:
【中文标题】如何从 Python 中的“dict”对象列表中基于键提取值【英文标题】:How to extract values based on keys from a list of `dict` objects in Python 【发布时间】:2021-09-03 00:15:43 【问题描述】:我有一个列表sample_list
看起来像这样:
['ID': '123456', 'price': '1.111', 'ID': '987654', 'price': '200.888', 'ID': '789789', 'price': '0.212',..,...]
它包含多个dict
对象,现在我想编写一个函数,将ID
列表作为输入并返回相应的price
,类似于:
def mapping_data(ids: list) -> map:
mapping_data['123456'] = '1.111
return mapping_data
实现这一目标的最简单方法是什么?
【问题讨论】:
【参考方案1】:您可以使用简单的list_comprehension
和if condition
:
def mapping_data(ids):
return [d['price'] for id in ids for d in l if d['ID'] == id]
完整代码:
l = ['ID': '123456', 'price': '1.111', 'ID': '987654',
'price': '200.888', 'ID': '789789', 'price': '0.212']
def mapping_data(ids):
return [d['price'] for id in ids for d in l if d['ID'] == id]
mapping_data(['987654', '123456']) #prints ['200.888', '1.111']
如果您需要 id 详细信息,也可以使用dict_comprehension
:
def mapping_data(ids):
return id:d['price'] for id in ids for d in l if d['ID'] == id
# prints '987654': '200.888', '123456': '1.111'
更好的选择:
Dict_comprehension
:
def mapping_data(ids):
return i['ID']:i['price'] for i in l if i['ID'] in ids
mapping_data(['987654', '123456'])
【讨论】:
以上是关于如何从 Python 中的“dict”对象列表中基于键提取值的主要内容,如果未能解决你的问题,请参考以下文章
python - 如何使用列表中的键和Python中的空值初始化dict?
python - 如何在python中附加一个列表时处理异常,其中包含从存储从.json文件读取的数据的dict读取的数据?