Python中如何对字典相同值分组、计数并按指定格式输出?
解决Python字典相同值按键分组、统计数量并格式化输出的问题
我来帮你搞定这个需求!咱们一步步来实现:
第一步:将相同值的键分组
首先需要把原字典的结构反转,让值作为新的键,对应的所有原键收集到一个列表里。这里用collections.defaultdict会非常省心,它能自动为每个新值初始化空列表:
from collections import defaultdict result = {'light':4,'plane':4, 'vehicle':5} # 初始化一个默认字典,用于分组 grouped_dict = defaultdict(list) for key, value in result.items(): grouped_dict[value].append(key)
执行完这段代码后,grouped_dict的内容是:{4: ['light', 'plane'], 5: ['vehicle']},完美实现了相同值的键分组。
第二步:统计每个值对应的键数量
想要知道每个值有多少个对应键,直接取分组后列表的长度就可以了:
# 统计并打印数量 for val, keys in grouped_dict.items(): print(f"值{val}对应的键有{len(keys)}个")
这段代码会输出:
值4对应的键有2个 值5对应的键有1个
第三步:按期望格式打印结果
最后咱们按照你想要的格式输出,把每个值和对应的键列表用逗号分隔后放在同一行:
# 格式化输出 for val, keys in grouped_dict.items(): print(f"{val} {', '.join(keys)}")
运行这段代码,输出就是你想要的:
4 light, plane 5 vehicle
完整代码整合
把所有步骤放在一起,完整代码如下:
from collections import defaultdict result = {'light':4,'plane':4, 'vehicle':5} # 分组 grouped_dict = defaultdict(list) for key, value in result.items(): grouped_dict[value].append(key) # 统计数量 print("=== 统计信息 ===") for val, keys in grouped_dict.items(): print(f"值{val}对应的键有{len(keys)}个") # 格式化输出 print("\n=== 格式化结果 ===") for val, keys in grouped_dict.items(): print(f"{val} {', '.join(keys)}")
运行后会得到:
=== 统计信息 === 值4对应的键有2个 值5对应的键有1个 === 格式化结果 === 4 light, plane 5 vehicle
内容的提问来源于stack exchange,提问作者Dave
相关产品推荐
相关产品推荐

