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
相关产品推荐
相关产品推荐

