
本文介绍如何从字典列表中提取指定键的值,并以 key: value 的形式、在同一行内清晰打印,支持灵活增删字段,兼顾可读性与代码简洁性。
本文介绍如何从字典列表中提取指定键的值,并以 key: value 的形式、在同一行内清晰打印,支持灵活增删字段,兼顾可读性与代码简洁性。
要实现将字典列表中特定字段(如 phaseName、racePosition、hillTime)以紧凑、易读的单行格式输出(例如 phaseName: Moto 1, racePosition: 6, hillTime: 2.754),关键在于避免逐个硬编码字段访问,而是通过动态键名列表驱动格式化逻辑。
推荐使用生成器表达式配合 str.join() 与 f-string,既高效又可读性强。以下是标准实现方式:
competitorRankDetails = [
{
"phaseCode": "M1",
"phaseName": "Moto 1",
"phaseBlockCode": "M1",
"rank": 1,
"raceName": "46",
"racePosition": 6,
"result": 1,
"score": 1,
"hillTime": "2.754",
"time": "30.755"
},
{
"phaseCode": "M2",
"phaseName": "Moto 2",
"phaseBlockCode": "M2",
"rank": 1,
"raceName": "97",
"racePosition": 7,
"result": 1,
"score": 2,
"hillTime": "2.732",
"time": "30.689"
},
{
"phaseCode": "M3",
"phaseName": "Moto 3",
"phaseBlockCode": "M3",
"rank": 1,
"raceName": "148",
"racePosition": 3,
"result": 1,
"score": 3,
"hillTime": "2.745",
"time": "30.692"
}
]
# 定义需输出的字段名(顺序即输出顺序)
info = ['phaseName', 'racePosition', 'hillTime']
# 一行核心逻辑:对每条记录,生成 "key: value" 字符串,再用 ', ' 连接
for record in competitorRankDetails:
print(', '.join(f"{k}: {record[k]}" for k in info))
输出结果:
phaseName: Moto 1, racePosition: 6, hillTime: 2.754 phaseName: Moto 2, racePosition: 7, hillTime: 2.732 phaseName: Moto 3, racePosition: 3, hillTime: 2.745
✅ 优势说明:
-
灵活可扩展:只需修改
info列表(如追加'score'或调整顺序),无需改动循环逻辑; -
安全可控:假设键一定存在(如数据结构稳定),若需健壮性,可改用
record.get(k, 'N/A')防止KeyError; -
性能友好:生成器表达式避免中间列表开销,
join()比多次print()或字符串拼接更高效; -
风格统一:自动保持字段名大小写原样(如
phaseName不会变成PhaseName),符合实际数据规范。
? 进阶提示: 若需首字母大写显示(如 PhaseName),可在 f-string 中处理:f"{k.title()}: {record[k]}";若需对齐或固定宽度,可结合 str.ljust() 或 f-string 格式化(如 f"{k}: {record[k]:>8}")。但核心原则不变:用声明式字段列表驱动输出,而非硬编码。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











