You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对列表中的嵌套字典按Price排序并获取最小值条目?

解决嵌套字典列表的Price排序与最小值提取

首先先明确你的原始数据结构:

data = [
    {'USA': [{'accommodations': '2 BR ','Price': 1245}, {'accommodations': '5 BR ','Price': 1045}]},
    {'Dubai': [{'accommodations': '2 BR | Sleeps 6','Price': 966}, {'accommodations': '5 BR | Sleeps 6','Price': 800}]}
]

你提到的普通sorted写法没法直接用,核心原因是你的数据是外层列表包裹着单个键值对的字典,每个字典的键是地区名,值才是包含Price的住宿列表——所以得先拆解这个嵌套结构,针对每个地区的住宿数据单独处理。

解决方案思路

  1. 遍历外层列表里的每个地区字典
  2. 对每个地区对应的住宿列表,直接用min()函数(比先排序再取第一个更高效)按Price字段筛选出最小值条目
  3. 把地区名(转成小写,匹配你的预期格式)和最小Price条目重新组织成目标结构

完整代码实现

result = []
for region_dict in data:
    # 快速取出地区名和对应的住宿列表(每个字典只有一个键值对,用next()+iter()高效获取)
    region, stays = next(iter(region_dict.items()))
    # 找出该地区Price最低的住宿条目
    cheapest_stay = min(stays, key=lambda x: x['Price'])
    # 按预期格式添加到结果列表
    result.append({region.lower(): cheapest_stay})

# 打印结果
print(result)

运行结果

[
    {'usa': {'accommodations': '5 BR ', 'Price': 1045}},
    {'dubai': {'accommodations': '5 BR | Sleeps 6', 'Price': 800}}
]

关键细节解释

  • next(iter(region_dict.items())):因为每个地区字典只有一个键(比如'USA'),这个方法可以跳过遍历,直接拿到地区名和对应的住宿列表,代码更简洁高效。
  • min(stays, key=lambda x: x['Price']):直接在住宿列表中定位Price最小的元素,逻辑比先sorted再取[0]更直观,性能也更好(不需要对整个列表排序)。
  • 如果不需要把地区名转成小写,只需要把region.lower()改成region即可。

内容的提问来源于stack exchange,提问作者Ajay Shewale

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:30:05