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

如何在一行中打印字典里具有相同值的不同键

解决方案:按字典值分组键并格式化输出

这问题我之前也碰到过,核心就是把字典里值相同的键归到一起,再按要求拼接成字符串对吧?下面给你两种实现方式,都能得到你想要的输出:

方式一:用collections.defaultdict简化分组

这种方式代码更简洁,借助Python标准库的defaultdict来自动处理列表的初始化:

from collections import defaultdict

example = {'a': 10, 'b': 12, 'c': 10, 'd': 12}

# 第一步:按值分组键
value_group = defaultdict(list)
for key, val in example.items():
    value_group[val].append(key)

# 第二步:拼接成目标格式
output_segments = []
for val, keys in value_group.items():
    output_segments.append(f"{val} {', '.join(keys)}")

# 最后合并所有片段
final_output = ' '.join(output_segments)
print(final_output)  # 输出:10 a, c 12 b, d

方式二:不用标准库,纯基础字典实现

如果不想引入额外模块,用普通字典也能搞定,就是多一步判断键是否存在的操作:

example = {'a': 10, 'b': 12, 'c': 10, 'd': 12}

value_group = {}
for key, val in example.items():
    if val not in value_group:
        value_group[val] = []
    value_group[val].append(key)

# 生成输出字符串的逻辑和上面一致
output_segments = [f"{val} {', '.join(keys)}" for val, keys in value_group.items()]
print(' '.join(output_segments))

调整输出顺序(可选)

上面的代码输出顺序可能会和示例略有不同(Python 3.7+字典才保序),如果你想严格按照示例里值从大到小的顺序输出,可以在遍历分组后的字典时加上排序:

# 按值降序排序后遍历
for val, keys in sorted(value_group.items(), key=lambda x: -x[0]):
    output_segments.append(f"{val} {', '.join(keys)}")

print(' '.join(output_segments))  # 输出:12 b, d 10 a, c

这样就完全匹配你想要的格式啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:19:57