python学习day5
1.dict数据字典
数据类型划分:可变数据类型,不可变数据类型
不可变数据类型:元组,bool,int,str 可哈希
可变数据类型:list,dict,set 不可哈希
数据字典的 key 必须是不可变数据类型,可哈希 ; value 是任意数据类型
优点:二分法快速查找;存储大量的关系型数据;
特点:无序的
2.dict的增
dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',} dic1['high'] = 178 #没有当前键值对时,增加 dic1['age'] = 20 #有键值对时,覆盖值 dic1.setdefault('weight',150) dic1.setdefault('name','haha') #有键值对时,不作任何改变,没有才添加
3.dict的删
按key删除
dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',} print(dic1.pop('大小','None')) #没有返回值时,可设置返回值,不会报错 print(dic1) print(dic1.pop('age')) #有返回值时,返回对应返回值,按键删除 print(dic1)
随机删除
dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',} print(dic1.popitem()) #随即删除键值对,3.6及以后版本因为有排序,会删掉最后一个,有返回值元组,为删除的键值 print(dic1)
其他删除
dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',} del dic1['name'] #按key删除,没有key会报错 del dic1 #删除字典 print(dict1.clear()) #清空字典,返回空字典
4.dict的改
把一个字典中的键值对更新到另一个字典中(有相同的key则更新value,没有相同的key则增加键值对)
dic = {"name":"jin","age":18,"sex":"male"} dic2 = {"name":"alex","weight":75} dic2.update(dic) print(dic) # dic 不变 print(dic2) # dic 中的键值对更新到 dic2 中
5.dict的查
dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',} print(dic1.keys()) #字典中的key,按照列表输出 print(dic1.values()) #字典中的value,按照列表输出 print(dic1.items()) #字典中的键值对,按照列表输出
dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',} for i in dic1: #遍历出字典中的key print(i) for i in dic1.values(): #遍历出字典中的value print(i) for i in dic1.items(): #遍历出字典中的键值对 print(i)
a,b = 1,2 a,b = b,a print(a,b) a,b = [1,2],[2,1] print(b,a) dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',} for k,v in dic1.items(): # print(k,v)
按key 查询 value
dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',} v1 = dic1['age'] #按key查询value,若key不存在,报错 print(v1) v2 = dic1.get('aaa') #按key查询value,若key不存在,返回None,可指定返回值: dict.get('aaa','没有该值') print(v2)
6.dict的嵌套
dic1 = { 'name':['小赵','xiaoqian','小孙'], 'money':{ 'breakfast':8, 'lunch':20, }, 'number':3, } dic1['name'].append('小李') #在name的值中增加小李 dic1['name'][1] = dic1['name'][1].upper() #将name的值的列表中第二个元素全部大写 dic1['money']['dinner'] = 15 #在money的值的字典中新增键值对 print(dic1)
6.回顾练习
用户输入一个字符串,整数部分相加,如123abc111def222 为 123+111+222
li = input('>>>') num = 0 for i in li: if i.isalpha(): li = li.replace(i,' ') li = li.split(' ') for i in li: if i.isdigit(): num += int(i) print(num)