1、数据类型
- 不可变数据类型:元组、bool、int、str又叫可哈希,(int、str的更改都是生成了一个新的,所以为不可变)
- 可变数据类型:list、dict、set;不可哈希
一、字典;{键:值,键:值}
- key:键,必须是不可变数据类型,可哈希
- value:值,任意数据类型
优点:
-
- 二分查找去查询(当目标为0-100内任意数字时,先找到50,小了,再找到75这样比较快速定位到目标);
- 存储大量的关系型数据
特点:无序(python3.6之前的版本是无序的)
- 增
1 dic = {"name":"jin","age":18,"sex":"male"} 2 3 dic['high'] = 185 #对键进行赋值添加,如果键'high'存在则将值进行覆盖。{'name': 'jin', 'age': 18, 'sex': 'male', 'high': 185} 4 5 6 dic.setdefault('weight') #可以只输入键,值可以默认为None {'name': 'jin', 'age': 18, 'sex': 'male', 'weight': None} 7 8 dic.setdefault('weight',66) #{'name': 'jin', 'age': 18, 'sex': 'male', 'weight': 66} 9 10 dic.setdefault('age',20) #当键存在时,不做任何改变,不存在才进行添加 {'name': 'jin', 'age': 18, 'sex': 'male'}
- 删
1 dic = {"name":"jin","age":18,"sex":"male"} 2 3 4 print(dic.pop('name')) #有返回值 按'键'进行删除,返回值为键对应的值 jin 5 print(dic) #{'age': 18, 'sex': 'male'} 6 7 print(dic.pop('aaa',None)) #可设置返回值,当字典中不存在键'aaa'时,返回None 8 9 print(dic.popitem()) #随机删除有返回值,返回值以元组形式返回 ('sex', 'male');(3.6版本默认删除最后一个键) 10 print(dic) #{'name': 'jin', 'age': 18} 11 12 del dic['age'] #按'键'进行删除 13 del dic #也可以删除整个字典 14 dic.clear() #清空字典 15 16 print(dic)
- 改
1 dic = {"name":"jin","age":18,"sex":"male"} 2 3 dic2 = {"name":"alex","weight":75} 4 5 dic.update(dic2) #将字典dic2中的键值更新到dic中,dic有的键将值进行覆盖,没有的键添加 6 print(dic) #{'name': 'alex', 'age': 18, 'sex': 'male', 'weight': 75} 7 8 dic['name'] = 'lilei' #直接对键赋值进行修改 9 print(dic) #{"name":"lilei","age":18,"sex":"male"}
- 查
1 dic = {"name":"jin","age":18,"sex":"male"} 2 3 4 print(dic.keys()) #以列表形式输出 键 dict_keys(['name', 'age', 'sex']) 5 print(dic.values()) #以列表形式输出 值 dict_values(['jin', 18, 'male']) 6 print(dic.items()) #以列表内嵌套元组,元组内为键,值的方式输出 dict_items([('name', 'jin'), ('age', 18), ('sex', 'male')]) 7 print(dic['name']) # 输出键对应的值jin,没有对应键会报错 jin 8 print(dic.get('hei')) #有输出键的值,没有不会报错会返回None None 9 print(dic.get('hei','没有')) #也可修改默认值None 没有