python统计列表中重复的字符串及重复字符串对应的个数

这篇博客记录了如何在Python中统计列表中重复的字符串及其出现次数。介绍了三种方法,包括使用Counter、遍历列表和列表去重。还补充了如何按重复次数对结果进行排序的技巧。
  • 统计列表中出现重复的元素,并统计重复的个数。
  • 这个题的解法有很多种,在此记录一下,给自己做个备忘录
  • 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)]  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值