Python字典用setdefault实现统计与排序

语法:d[k] = d.setdefault(k,0) + 1
说明:若字典的 key=i 不存在就设为 d[i]=0, 否则存在时就 d[i]+1 相当于一个分支判断,如下;
d = {}
for k in list1:
    if k in d.keys():
        d[k] += 1   # 存在则次数 value 加1
    else:
        d[k] = 1    # 不存在则次数设为1

例1:请统计a字符串出现的每个字母的出现次数(忽略大小写,a与A是同一个字母),并输出成一个字典。 例 {‘a’:4,‘b’:2}

def fun(s):
    d = {}
    for i in s.lower():
        d[i] = d.setdefault(i,0) + 1
    return d

a = "aAsmr3idd4bgs7Dlsf9eAF"
fun(a)

输出结果:

{'a': 3,  's': 3,  'm': 1,  'r': 1,  '3': 1,  'i': 1,  'd': 3,  '4': 1,  'b': 1,  'g': 1,  '7': 1,  'l': 1,  'f': 2,  '9': 1,  'e': 1}

例2:
统计下面字符串中每个单词出现的次数,并生成一个字典,单词作为key,次数作为value, 字符串为:str1 = “tomorrow is a good day tomorrow is a bad day tomorrow is a sunny day”

def count(str1):
    d = {}
    list1 = str1.split()
    for i in list1:
        d[i] = d.setdefault(i,0)+1
    d = dict(sorted(d.items(),key=lambda x:x[0]))  # 字典排序,按key排
    return d

str1 = "tomorrow is a good day tomorrow is a bad day tomorrow is a sunny day"
count(str1)

输出结果:

{'a': 3, 'bad': 1, 'day': 3, 'good': 1, 'is': 3, 'sunny': 1, 'tomorrow': 3}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值