语法: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}