假设有个列表 a=[1,1,1,2,2,4,4,5,5,5,5,5] (非空且为正整数)
那么根据要求 最终输出的形式为 [5, 1, 2, 4] (按重复次数 降序排列输出)
方法一:通过列表实现
# -*- coding: UTF-8 -*-
#取出数字出现的次数放进L中,并降序排序
L=[]
a=[1,1,1,2,2,4,4,5,5,5,5,5]
for i in a:
L.append(a.count(i))
L = list(set(L))
L.sort(reverse=True)
#取出次数对应a列表里面的值放进新列表num1中
num1=[]
for m in L:
for n in a:
if m == a.count(n):
num1.append(n)
#去重
num2=[]
for i in num1:
if i not in num2:
num2.append(i)
print num2
方法二:通过字典实现
#将数字和对应重复次数作为key,value放入字典
List=[1,1,1,2,2,5,4,4,5,5,5,5,5]
a = {}
for i in List:
if List.count(i)>=1:
a[i] = List.count(i)
#对字典value(重复次数)降序排序,以列表形式返回
a = sorted(a.items(), key=lambda item:item[1],reverse=True)
>>>[(5, 6), (1, 3), (2, 2), (4, 2)]
num=[]
#获取列表中每个元组中的第一个值,即数组中的数字(此时已是按重复次数降序)
for item in a:
num.append(item[0])
print num
>>>[5, 1, 2, 4]