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

Python:按嵌套字典中member列表长度排序字典列表的高效方法

高效Python风格的排序实现方法

这问题太常见了,用Python内置的sorted()函数配合自定义key就能完美解决,既符合Pythonic的优雅风格,效率也拉满。

首先得明确你的排序逻辑:是按主列表元素中所有queues里member列表的长度总和排序,还是按某个特定queues的member长度排序?我给你两种常见场景的实现:

1. 按所有queues的member长度总和排序

这应该是最常用的场景,计算每个主列表元素下所有member列表的长度之和,然后按这个总和排序:

# 假设你的主列表叫main_list
sorted_main_list = sorted(main_list, key=lambda x: sum(len(queue['member']) for queue in x['queues']))

如果需要降序排列(从长到短),只需要加reverse=True参数:

sorted_main_list = sorted(main_list, key=lambda x: sum(len(queue['member']) for queue in x['queues']), reverse=True)

2. 按特定queues的member长度排序

如果你的需求是按主列表元素中第一个queues的member长度排序(比如每个主元素只关注第一个队列的成员数),可以这么写:

sorted_main_list = sorted(main_list, key=lambda x: len(x['queues'][0]['member']))

容错优化(可选)

如果你的数据可能存在空队列、缺失queues或member键的情况,可以用dict.get()做容错处理,避免报错:

sorted_main_list = sorted(
    main_list,
    key=lambda x: sum(len(queue.get('member', [])) for queue in x.get('queues', []))
)

这里如果某个主元素没有queues键,或者某个队列没有member键,会默认长度为0,不会抛出KeyError或IndexError。

为什么这方法高效且Pythonic?

  • sorted()内置的Timsort算法是业界公认的高效排序实现,时间复杂度为O(n log n),性能拉满;
  • 用lambda表达式作为key参数,写法简洁直观,完全符合Python“简洁优雅”的风格;
  • 惰性计算的方式,每次只处理一个元素,内存开销极小,适合处理大规模数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 10:08:12