如何获取列表嵌套字典中price键的最小值及对应字典的id?
问题描述
现有如下数据:
data = [{'name': 'abc', 'id': 'abc123','price': '$10'}, {'name': 'def', 'id': 'efg123','price': '$15'}, {'name': 'ghi', 'id': 'ghi123','price': '$5'}, ]
需求是:去除所有字典中price键值的$符号,转换为数值后找出最小值,同时获取该最小值所属字典的id。
目前已写出去除符号的代码:
for i in data: data_price = i['price'] new_price = data_price.strip('$') print(new_price)
但不知道如何比较这些值并获取最小值及对应的id,求实现方法。
解决方案
可以用两种实用方式实现,以下是具体代码和说明:
方法一:遍历记录法
在遍历过程中维护当前的最小值和对应ID,逻辑直观易懂:
data = [{'name': 'abc', 'id': 'abc123','price': '$10'}, {'name': 'def', 'id': 'efg123','price': '$15'}, {'name': 'ghi', 'id': 'ghi123','price': '$5'}, ] min_price = None min_id = None for item in data: # 去除$符号并转换为整数(如果是小数价格,替换为float即可) price_num = int(item['price'].strip('$')) # 初始化或更新最小值及对应ID if min_price is None or price_num < min_price: min_price = price_num min_id = item['id'] print(f"最小价格: {min_price}, 对应ID: {min_id}")
运行结果:最小价格: 5, 对应ID: ghi123
方法二:使用min()函数(推荐)
利用Python内置min()的key参数,直接指定比较依据为转换后的价格数值,一步获取目标字典:
data = [{'name': 'abc', 'id': 'abc123','price': '$10'}, {'name': 'def', 'id': 'efg123','price': '$15'}, {'name': 'ghi', 'id': 'ghi123','price': '$5'}, ] # 找到价格最小的字典 min_item = min(data, key=lambda x: int(x['price'].strip('$'))) min_price = int(min_item['price'].strip('$')) min_id = min_item['id'] print(f"最小价格: {min_price}, 对应ID: {min_id}")
这种写法更简洁高效,符合Python的惯用风格。
内容的提问来源于stack exchange,提问作者ash2021
相关产品推荐
相关产品推荐

