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

Python中按特定元素出现次数倒序排列嵌套列表的问题

解决嵌套列表按元素出现次数降序排序的问题

哦,这个错误我之前也踩过坑!让我先帮你理清问题出在哪,再给你一个简洁的Pythonic解决方案。

为什么会触发TypeError?

你写的代码里,a.count(1)会直接计算整个外层列表a中数字1的总出现次数(在你的例子里是5),得到的是一个整数。而list.sort()方法的key参数需要的是一个函数——这个函数会被逐个应用到列表的每个子元素上,生成用来排序的依据值。你把一个整数传给key,Python会尝试把这个整数当成函数去调用,自然就抛出TypeError: 'int' object is not callable的错误了。

正确的Pythonic实现方式

我们只需要把key参数改成一个能针对每个子列表统计1出现次数的函数就行,用lambda表达式是最简洁的写法:

a = [[0,1,0],[1,1,1], [0,1,1]]
a.sort(key=lambda sublist: sublist.count(1), reverse=True)
print(a)  # 输出: [[1,1,1],[0,1,1],[0,1,0]]

如果不想修改原列表,而是生成一个新的排序后的列表,可以用sorted()函数(它会返回新列表,原列表保持不变):

a = [[0,1,0],[1,1,1], [0,1,1]]
sorted_a = sorted(a, key=lambda sublist: sublist.count(1), reverse=True)

这个写法完全没有硬编码,如果你之后想按其他元素的出现次数排序,只需要把sublist.count(1)里的1换成目标元素就可以了,非常灵活。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:34:14