我希望能够按照列表中元素出现的次数对列表进行排序。
当我使用以下形式时:
当我使用以下形式时:
A=[2,1,3,4,2,2,3]
A.sort(key=lambda x:A.count(x))
print(A)
结果不是我想要的: [2, 1, 3, 4, 2, 2, 3]
.
但是,当我使用sorted
时,它会像这样:
B=sorted(A,key=lambda x:A.count(x))
print(B)
结果正确:[1, 4, 3, 3, 2, 2, 2]
。
这种行为的原因是什么?
lambda
,例如A.sort(key = A.count)
。 - Chris_Rands[A.count(element) for element in set(A)]
。 - UpSamplerCounter
(A.sort(key=collections.Counter(A).get)
) 会更有效率,并且适用于sort
和sorted
。 - Faibbuslist object
(列表对象)是可变的,数据的索引在动态改变。 - Fatih1923