python---按重复数字的次数 降序排列 返回数组

假设有个列表 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]
  1. items函数,将一个字典以列表的形式返回,因为字典是无序的,所以返回的列表也是无序的
  2. 内建函数 sorted 方法返回的是一个新的 list
    sorted(iterable,key,reverse),sorted一共有iterable,key,reverse这三个参数。
    其中iterable表示可以迭代的对象,例如可以是dict.items()、dict.keys()等,key用来决定按什么排序,reverse则是用来指定排序是倒序还是顺序,reverse=true则是倒序,reverse=false时则是顺序,默认时reverse=false。
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值