我试图按其元素的频率对列表进行排序。
>>> a = [5, 5, 4, 4, 4, 1, 2, 2]
>>> a.sort(key = a.count)
>>> a
[5, 5, 4, 4, 4, 1, 2, 2]
a
不变。然而:
>>> sorted(a, key = a.count)
[1, 5, 5, 2, 2, 4, 4, 4]
为什么这种方法不起作用.sort()
?
您看到的是的某些 CPython实现细节 的结果list.sort
。再试一次,但是先创建一个副本a
:
a.sort(key=a.copy().count)
a
# [1, 5, 5, 2, 2, 4, 4, 4]
.sort
在a
内部进行修改,因此a.count
将产生无法预测的结果。
这被记录为实现细节。
什么copy
电话确实是它创建的副本a
用途和 该 列表的count
的关键方法。您可以看到一些调试语句会发生什么:
def count(x):
print(a)
return a.count(x)
a.sort(key=count)
[]
[]
[]
...
a
在内部访问时会显示为空列表.sort
,并且[].count(anything)
将是0
。这解释了为什么输出与输入相同-谓词都相同(0
)。
OTOH,sorted
创建一个新列表,因此它没有此问题。
如果您真的想按频率计数排序,惯用的方法是使用Counter
:
from collections import Counter
a.sort(key=Counter(a).get)
a
# [1, 5, 5, 2, 2, 4, 4, 4]
我的方法应该按字母顺序排序所有对象的姓氏,这些对象包含在一个arraylist中 Rubrica类 主要的 谢谢你的帮助。
问题内容: 我有一组三个列表项,它们希望在页面加载时从高到低自动显示。理想情况下使用jquery或javascript。 每个列表项都需要有自己的ID,因为它们每个都有各自的背景图像。数字必须是文本节点,以便用户可以编辑它们。 问题答案: 这可能是最快的方法,因为它不使用jQuery: 像下面这样调用函数: 您可以以相同的方式对其他列表进行排序,如果列表类在同一页面上还有其他元素,则应给您的ul一
当添加到JTable(包含表单元格中不同的JCombo Box)中的排序器/autoRowSorter用列标题排序时,Jcomo Box不会用相应的行排序。 单击JCombo框可以更改它在显示组合框的模型值而不是视图值(与行相关的值)中结束的数据。 在互联网上找到的例子,用同样的方法来说明问题。我刚刚添加了setAutoCreateRowSorter(真) 代码参考: 如何在Swing中的JTab
我有一个这样的方法: 此方法需要以如下字符串形式返回3个最昂贵项目的产品ID:“item1,item2,item3”。我应该只能使用溪流,我被困在这里了。我应该能够按值对项目进行排序,然后获得产品ID,但我似乎无法使其正常工作。 编辑: 产品ID位于入口类中
问题内容: 我有兴趣对流中的列表进行排序。这是我正在使用的代码: 我想念什么吗?列表未排序。 它应该根据具有最低值的项目对列表进行排序。 以及打印方法: 问题答案: 这与对参数引用进行排序的地方不同。在这种情况下,您将得到一个排序后的流,最终需要将其收集并分配给另一个变量: 您只是错过了分配结果
本文向大家介绍如何使用JavaScript对HTML列表进行排序?,包括了如何使用JavaScript对HTML列表进行排序?的使用技巧和注意事项,需要的朋友参考一下 要使用JavaScript对HTML列表进行排序,代码如下- 示例 输出结果 上面的代码将产生以下输出- 在点击“点击排序”按钮-