1.题目描述:
2.代码
#思路list记录,zip,排序 100
n=int(input())
data=list(map(int,input().split()))
num,cnt=[],[]
for it in data:
if it not in num:
num.append(it)
cnt.append(1)
else:
for i in range(len(num)):
if it==num[i]:
cnt[i]+=1
dic=list(zip(num,cnt))
dic.sort(key= lambda x:x[0])
dic.sort(key= lambda x:x[1],reverse=True)
for i in range(len(num)):
print("%d %d"%(dic[i][0],dic[i][1]))
3.使用库函数
\*~.~*/ 库函数小课堂
c = collections.Counter(参数)
#参数可以是list、str、tuple、None等等
#作用:统计参数每个元素出现的次数
#返回:一个字典(元素作为key存储,元素出现次数作为value存储)
c.update('adc') # 在原来基础上更新计数(直接修改c)
# 输出: Counter({'a': 4, 'c': 1, 'd': 2, 'g': 1, 'h': 1, 'l': 2})
c.most_common()
# 输出:[('a', 4), ('l', 2), ('d', 1), ('g', 1), ('b', 1), ('c', 1), ('h', 1)]
#返回一个TopN列表。如果n没有被指定,则返回所有元素。当多个元素计数值相同时,排列是无确定顺序的
# 相当于字典排序:sorted(c.items(), key=lambda asd:asd[1], reverse=True)
常用函数:
sum(c.values()) # 所有计数的总数
c.clear() # 重置Counter对象,注意不是删除
list(c) # 将c中的键转为列表
set(c) # 将c中的键转为set
dict(c) # 将c中的键值对转为字典
c.items() # 转为(elem, cnt)格式的列表
Counter(dict(list_of_pairs)) # 从(elem, cnt)格式的列表转换为Counter类对象
c.most_common()[:-n:-1] # 取出计数最少的n-1个元素
c += Counter() # 移除0和负值
(2)代码
import collections
n=int(input())
data=list(map(int,input().split()))
dic= collections.Counter(data)
l=list(dic.items())
l.sort(key=lambda asd:asd[0])
l.sort(key=lambda asd:asd[1], reverse=True)
for it in l:
print("%d %d"%(int(it[0]),int(it[1])))
4.参考:
https://www.cnblogs.com/lianyingteng/p/7727598.html