字典dict
一:字典dict
数据类型划分:可变数据类型,不可变数据类型
不可变数据类型:int str 元组 bool (又叫做:可哈希)
可变数据类型:list dict set (又叫做:不可哈希)
dict的key必须是不可变数据类型,values:任意数据类型
字典dict的优点:二分查找,存储大量关系型数据
特点:无序的
建立字典:
dic = {'name':['x','y'], 'py9':[{'number':99, 'age':20}], 'true':1, (1,2,3):'lili', 2:'张三'}
字典的增删改查:
dic1 = {'age':18,'name':'wang','sex':'male'}
①增:直接添加:dic1[ ‘high’] = 186
若原字典中有high键,则值被覆盖,若没有,就增加high到字典中
dic1.setdefault('weight':130)
dic1.setdefault('name':'三枚')
原字典有‘name’,但不做任何改变
②删:
dic1.pop('name')删除'name':'wang',有返回值wang dic1.pop('hobby')没有此键,会报错 dic1.pop('hobby',none)返回none,表示无此键,可设置返回值 dic1.popitem()随机删除,有返回值,返回的是元组形式的键值 dic1.clear()清空字典 del dic1['name']删除,若没有会报错
③改:
直接改;dic1[‘age’]=20
update; dic2 = {'name':'大王','weight':160} dic2.update(dic1) 结果:{'name':'wang','weight':160,'age':18,'sex':'male'}
Dic2被覆盖,添加没有的,覆盖有的
④查:
dic1.keys()查键 dic1.values()查键值 dic1.items()查键值对
for i in dic1 和 for i in dic1.keys()查的结果一样,都是打印键
面试题:
用一句话交换a,b的值。a=1,b=2 a,b = b,a 结果:a=2,b=1
补:
a,b = [1,2] 结果:a=1,b=2 a,b =[1,2],[3,4]结果:a =[1,2] b=[3,4] a,b=(1,2) 结果:a=1,b=2
for i in dic1.items(): print(i)
结果:('age',18)
for k,v in dic1.items(): print(k,v) 结果:age 18
dic1['name'] 结果:name的键值,但若没有会报错 dic1.get('name')结果:键值,但若没有返回None,也可以自己设置返回值
题:输入一个字符串和数字,判断有几个数字
info = input('<<<').strip() for i in info: if i.isalpha(): info = info.replace(i,' ') a = info.split() print(len(a))