jtxs0000 发表于 2020-8-18 10:34:16

如何计算列表的百分比

一个列表,里面有很多重复值,如何计算里面重复值的百分比并合并起来{:10_266:}

谢谢大佬





x =


qiuyouzhi 发表于 2020-8-18 10:37:44

sum(set(x))

tttxiaoz 发表于 2020-8-18 10:39:30

list有个count方法可以统计某一个元素的值
x.count(111)

jtxs0000 发表于 2020-8-18 10:40:27

tttxiaoz 发表于 2020-8-18 10:39
list有个count方法可以统计某一个元素的值

要百分比{:10_266:}

Twilight6 发表于 2020-8-18 10:40:29

x =
result = []
for i in set(x):
    result.append((i,'{:.2f}%'.format((x.count(i)/len(x))*100)))
print(*result)

输出结果:
(555, '14.29%') (333, '14.29%') (111, '21.43%') (666, '7.14%') (444, '21.43%') (222, '21.43%')

jtxs0000 发表于 2020-8-18 10:42:38

qiuyouzhi 发表于 2020-8-18 10:37


比如,1个111在列表占10%,那么3个就占30%,同理,222,333这些站多少,我是想算这个,方法不限,可以应用库{:10_266:}

jtxs0000 发表于 2020-8-18 10:43:56

Twilight6 发表于 2020-8-18 10:40
输出结果:

你是这个{:10_275:}

jtxs0000 发表于 2020-8-18 10:45:49

Twilight6 发表于 2020-8-18 10:40
输出结果:

大佬,再问个问题,如果里面有中文或者英文有影响吗

永恒的蓝色梦想 发表于 2020-8-18 10:50:09

jtxs0000 发表于 2020-8-18 10:45
大佬,再问个问题,如果里面有中文或者英文有影响吗

没有影响。

永恒的蓝色梦想 发表于 2020-8-18 10:53:13

Twilight6 发表于 2020-8-18 10:40
输出结果:

from collections import Counter


x =
result = []
for i, j in Counter(x).items():
    result.append((i,'{:.2f}%'.format((j/len(x))*100)))
print(*result)效率会更好

_2_ 发表于 2020-8-18 10:55:03

本帖最后由 _2_ 于 2020-8-18 10:58 编辑

我来试试:
x =
def func(x: list) -> list: return [(i, j) for i in list(set(x)) for j in for __ in * len(x)]]
func(x)
没测试,可能有错

jtxs0000 发表于 2020-8-18 10:58:19

谢谢各位大佬解答,只能按时间先后给最佳了,不好意思

fall_bernana 发表于 2020-8-18 11:06:41

from collections import Counter
list(map(lambda k:(k,k/len(x)),Counter(x).items()))

输出结果:
[(111, 0.21428571428571427), (222, 0.21428571428571427), (333, 0.14285714285714285), (444, 0.21428571428571427), (555, 0.14285714285714285), (666, 0.07142857142857142)]
页: [1]
查看完整版本: 如何计算列表的百分比