如何在Python中一行打印字典列表中指定的键值对
如何在Python中一行打印字典列表中指定的键值对
嘿,我来帮你搞定这个问题!你想要的是从字典列表里提取指定键的键值对,按整洁的格式每行打印一条记录,还能方便扩展要显示的字段,对吧?
你的现有代码问题出在print(*record,[record[k] for k in info])这行——*record会把字典的所有键拆成参数打印出来,再加上后面的列表,自然就输出混乱了。咱们换个思路,直接针对你指定的info列表生成想要的格式字符串就行:
方法一:简洁的生成器表达式 + 字符串拼接
info = ['phaseName', 'racePosition', 'hillTime'] for record in competitorRankDetails: # 遍历info里的每个键,生成"键: 值"的字符串,再用" , "连接起来 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中的键,可以用dict.get()方法设置默认值:
for record in competitorRankDetails: print(' , '.join(f"{k}: {record.get(k, 'N/A')}" for k in info))
这样如果某个键不存在,会显示N/A而不是抛出KeyError。
扩展字段超方便
以后要加更多字段,直接往info列表里加就行,比如想加上time和score:
info = ['phaseName', 'racePosition', 'hillTime', 'time', 'score']
循环代码完全不用改,输出会自动包含新的键值对,完美符合你的需求~
备注:内容来源于stack exchange,提问作者Pintglass
相关产品推荐
相关产品推荐

