编写一个Python函数直方图(l),它将带有重复的整数列表作为输入,并返回一对对列表,如下所示: 对于l中出现的每个数字n,函数返回的列表中应该只有一对(n,r),其中r是l中l的重复次数。
最终列表应按r(重复次数)的升序排序。对于具有相同重复次数的数字,请按照数字值的升序排列对。
例如:
直方图([13,12,11,13,14,13,7,7,13,14,12]) [(11,1),(7,2),(12,2),(14,2),(13,4)]
直方图([7,12,11,13,7,11,13,14,12]) [(14,1),(7,2),(11,2),(12,2),(13,2)]
答案 0 :(得分:1)
>>> def histogram(L):
... from collections import Counter
... return Counter(L).items()
...
>>> histogram([13,12,11,13,14,13,7,7,13,14,12])
[(11, 1), (12, 2), (13, 4), (14, 2), (7, 2)]
>>> histogram([7,12,11,13,7,11,13,14,12])
[(11, 2), (12, 2), (13, 2), (14, 1), (7, 2)]
答案 1 :(得分:0)
def histogram(l):
b=[]
x=[]
f=[]
for i in range(len(l)):
a=()
if l[i] not in x:
c=l.count(l[i])
f.append(c)
f.sort()
a=a+(l[i],c)
b.append(a)
x.append(l[i])
del a
else:
continue
b=sorted(b,key=lambda f: (f[1],f[0]))
return b
答案 2 :(得分:0)
如果您对我的代码有任何疑问,请随时提出。 如果我的代码需要任何改进,请告诉我。
{{1}}