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

Python字典优化:如何高效筛选指定城市的Top3条目

优化方案:筛选、排序并提取指定字典条目

需求说明

从给定字典中完成以下操作:

  • 筛选出值中包含"Wroclaw"的键值对
  • 按每个条目值列表的最后一个数值降序排序
  • 提取并打印排名前三的完整条目

优化后的代码

from datetime import date, time
from decimal import Decimal

# 示例字典
mydict = {
    'Amathus': [date(2022, 8, 10), time(1, 30), 'Wroclaw', Decimal('3.75'), 33.91], 
    'Falesia': [date(2022, 8, 10), time(1, 30), 'Wroclaw', Decimal('4.00'), 21.46], 
    'Diamond': [date(2022, 8, 10), time(1, 30), 'Posznan', Decimal('4.50'), 40.24], 
    'Kid': [date(2022, 8, 10), time(1, 30), 'Posznan', Decimal('4.50'), 42.24]
}
city = "Wroclaw"

# 筛选+排序+取前三一步完成
top_three_entries = sorted(
    # 先筛选出符合城市条件的键值对元组
    [(key, value) for key, value in mydict.items() if city in value],
    # 按值列表最后一个元素降序排序
    key=lambda item: item[1][-1],
    reverse=True
)[:3]

# 遍历打印结果
for key, value in top_three_entries:
    print(key, value)

优化点说明

  • 省去单独构建新字典的步骤,用列表推导直接生成筛选后的键值对元组列表,减少冗余中间变量
  • 排序时通过lambda表达式直接指定排序依据(值列表的最后一个元素),逻辑更直观,无需依赖字典的get方法
  • 用切片[:3]直接获取排名前三的条目,替代手动计数的while循环,代码更简洁易读
  • 遍历结果时直接解构键值对,打印逻辑清晰明了

内容的提问来源于stack exchange,提问作者Jay Jericho

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 01:45:34