gpt4 book ai didi

python - 在 Python 中按出现次数排序向量列表

转载 作者:行者123 更新时间:2023-11-28 20:33:59 29 4
gpt4 key购买 nike

我正在尝试根据特定元素的出现次数对列表列表进行排序(倒序)。

我试过以下表达式:

a = [[0,1,0],[1,1,1], [0,1,1]
a.sort(key = (a).count(1) , reverse = True)

所需的输出必须是:

a = [[1,1,1],[0,1,1],[0,1,0]]

但是我得到了错误:

TypeError: 'int' object is not callable

可能,我在扩展“键”的定义。有没有一种方法可以在不对它进行硬编码的情况下以更 Pythonic 的方式完成我在上面尝试的操作?

最佳答案

key 参数通过获取一个callable 并将其应用于列表中的每个元素以确定它在最终排序结果中应位于的位置。

在您的情况下,您传递了 a.count(1),它在 调用 list.sort 之前被评估。排序时,python 将尝试 __call__ 传递的结果(在本例中为 0),但会失败,因为 int 不可调用。如上所述,诀窍是传递一个可调用对象。

如果你想传递一个内联调用,你需要使用一个lambda函数:

a.sort(key=lambda x: x.count(1), reverse=True)

否则,定义一个函数,如其他答案所示,并将其作为排序键传递给 list.sort

最后,如果您的列表只有 0 和 1,您可以使用 key=sum 进行微优化。

a.sort(key=sum, reverse=True)

在这种情况下(假设这种情况成立),sum(x)x.count(1) 将返回相同的结果.

关于python - 在 Python 中按出现次数排序向量列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49484740/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com