使用{}生成的是一个空的字典,不是集合,要想生成集合需要使用函数set().
字典类型的函数和方法:d={}为例
- d.keys():返回所有的键信息
- d.values():返回所有的值信息
- d.items()返回所有的键值对
- d.get(key,default):键存在(key)则返回相应值,否则返回默认值
- d.pop(key,default):键存在则返回相应值,同时删除键值对,否则返回默认值default
- d.popitem():随机从字典中取出一个键值对,以元组(key,value)形式返回
- d.clear():删除所有的键值对
- del d[key]:删除字典中某一个键值对
- key in d:如果键在字典中则返回True,否则返回False
注意:字典对于统计元素的个数是一个非常好的解决方案,但有时需要按照某种需要排序,这就需要将字典转换为列表的形式,通过列表的内置函数sort()可以实现某种方式的排序。
字典中的get()方法—统计相同键所对应的值的个数
对于一个字典d{}
d[word]=d.get(word,num):如果字典中不存在word这个键,将会返回num作为键所对应的值,如果存在这个键,将会返回这个键所对应的值(value)。
附加:列表中的sort()函数
list.sort(d.items(),key=lambda x:x[1],reverse)
d.items()为待排序的对象,此处为字典中的键值对。
key=lambda x:x[i]:对前面对象的二维数组(value)进行排序
reverse:排序的方式,reverse=True时为降序,reverse=False时为升序(默认)
题目:
键盘输入一组水果名称并以空格分隔,共一行,统计各类型的数量,从数量多到少的顺序输出类型及对应数量,以英文冒号分隔,每个类型各一行。
输入
苹果 芒果 草莓 芒果 苹果 草莓 芒果 香蕉 芒果 草莓
输出
芒果:4
草莓:3
苹果:2
香蕉:1
代码实现
fo=open("PY202.txt","w")
txt=input("请输入类型序列:")
fruits=txt.split(" ")#对于分开的中文进行提取时,括号里需要有空格的标记,split()是提取函数,英文以默认的空格为提取前提
d={}#定义一个字典
for fruit in fruits:#得到键值对
d[fruit]=d.get(fruit,0)+1#统计同种键所对应的值的个数
ls=list(d.items())#将字典转换为列表
ls.sort(key=lambda x:x[1],reverse=True)#按照数量的个数进行降序排序
for k in ls:
fo.write("{}:{}\n".format(k[0],k[1]))
fo.close()