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

如何在Python中获取嵌套defaultdict中的前3个最大值?

解决嵌套defaultdict的排序问题

要实现你需要的排序输出,核心是先提取所有层级的键值对,再按指定规则排序,最后格式化输出。以下是具体步骤和代码:

步骤说明

  1. 提取所有键值对:遍历外层defaultdict的每个键,再遍历内层defaultdict的键和对应值,把这些信息整理成统一的可排序结构。
  2. 自定义排序规则:按值降序排列(值大的在前),如果值相同,可按需按外层键、内层键排序(可选)。
  3. 过滤与格式化输出:根据需求过滤掉不需要的条目(比如值小于2的),然后按指定格式打印。

完整代码

from collections import defaultdict

# 构造你的嵌套defaultdict(修正原代码的语法错误)
nested_dict = defaultdict(lambda: defaultdict(int), {
    'A': defaultdict(int, {'a':2, 'b':1, 'd':2, 'f':1}),
    'B': defaultdict(int, {'a':3, 'c':4, 'e':1})
})

# 提取所有层级的键值对
all_entries = []
for outer_key, inner_dict in nested_dict.items():
    for inner_key, value in inner_dict.items():
        all_entries.append( (value, outer_key, inner_key) )

# 按值降序排序,值相同时按外层键、内层键升序排序
sorted_entries = sorted(all_entries, key=lambda x: (-x[0], x[1], x[2]))

# 过滤并输出符合要求的结果(这里保留值≥2的条目)
for value, outer_key, inner_key in sorted_entries:
    if value >= 2:
        print(f"{outer_key},{inner_key} : {value}")

输出结果

B,c : 4
B,a : 3
A,a : 2
A,d : 2

如果只需要输出前3条(和你给出的示例输出完全一致),把最后一步改成:

for value, outer_key, inner_key in sorted_entries[:3]:
    print(f"{outer_key},{inner_key} : {value}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 23:15:24