- 统计列表中出现重复的元素,并统计重复的个数。
- 这个题的解法有很多种,在此记录一下,给自己做个备忘录
- List = [1,2,3,1,2,3,“python”,4,5"python"]就那个这个简单的列表来举例
1.方法一,可以使用字典的方法Counter来实现:输出的结果是个字典。
#需要导入Counter方法
from collections import Counter
List = [1,2,3,1,2,3,"python",4,5,"python"]
list = dict(Counter(List))
print({key:value for key,value in list.items() if value > 1})
=>{1: 2, 2: 2, 3: 2, 'python': 2}
2.方法二,使用遍历列表元素来实现。这也是比较容易想到的方法,输出的结果也是个字典。
def counter_num(List):
#定义一个字典
counter={}
for i in List:
#List.count(i)统计列表元素对应的个数
if List.count(i) > 1:
counter[i] = List.count(i)
print(counter)
counter_num(List) => {1: 2, 2: 2, 3: 2, 'python': 2}
3.方法三,用到是的列表去重和字符串格式化,只要结果,不要求输出格式的,可以用这个。
mylist = set(List)
for i in mylist:
print("%s:%d" %(i,List.count(i)))
4、补充一个统计完列表中字符串的个数后,对返回的结果按照重复次数从多到少排序。
1)对返回的结果按照重复次数从多到少排序,其实就是对返回的字典的值进行排序。
L = [1,2,3,1,2,3,1,2,6,7,8,8,8,8]
counter = {}
for i in L:
if L.count(i) > 1:
counter[i] = L.count(i)
#对返回的结果按照字典的值从大到小排序
counter1 = sorted(counter.items(),key=lambda x:x[1],reverse=True)
print(counter1)
==> [(8, 4), (1, 3), (2, 3), (3, 2)]
2)若是对返回的结果按照字典的键从大到小排序就是:
L = [1,2,3,1,2,3,1,2,6,7,8,8,8,8]
counter = {}
for i in L:
if L.count(i) > 1:
counter[i] = L.count(i)
#按字典的键进行从大到排序
counter1 = sorted(counter.items(),key=lambda x:x[0],reverse=True)
print(counter1)
===> [(8, 4), (3, 2), (2, 3), (1, 3)]
这篇博客记录了如何在Python中统计列表中重复的字符串及其出现次数。介绍了三种方法,包括使用Counter、遍历列表和列表去重。还补充了如何按重复次数对结果进行排序的技巧。

3696

被折叠的 条评论
为什么被折叠?



