字典dict
数据类型划分:可变数据类型,不可变数据类型。不可变数据类型:tuple bool int str (可哈希)。 可变数据类型:list dict set (不可哈希)。
dict key 必须是不可变数据类型,可哈希;value:任意数据类型。dict 优点:二分查找去查询,可以存储大量的关系型数据。特点:无序的。
1、增
#第一种
dic = {'age': 18, 'name': 'jason', 'sex': 'male'}
dic['age'] = 19 #如果有键对应,则值覆盖
dic['hobby'] = 'girls' #没有键值对,在末尾添加
print(dic) #{'age': 19, 'name': 'jason', 'sex': 'male', 'hobby': 'girls'}
#第二种
dic = {'age': 18, 'name': 'jason', 'sex': 'male'}
dic.setdefault('hobby') # 有键值对,不做任何改变,没有才添加。不赋值默认None
dic.setdefault('age',19)
dic.setdefault('weight',60)
print(dic) #{'age': 18, 'name': 'jason', 'sex': 'male', 'hobby': None, 'weight': 60}
2、删
# pop 有返回值,返回删除键对应的value,如果不存在则报错,可以添加第二个参数作为返回值
dic = {'age': 18, 'name': 'jason', 'sex': 'male'}
print(dic.pop('age'),dic.pop('hobby',None),dic)
#18 None {'name': 'jason', 'sex': 'male'}
# popitem 随机返回并删除字典中的最后一对键和值
print(dic.popitem())
# 清空字典(字典还存在)
dic.clear()
# del 通过键删除键值对
del dic['name'] #打印返回{'age': 18, 'sex': 'male'}
del dic #删除整个字典(字典不存在)
3、改
# 通过键值对直接改
dic = {'age': 18, 'name': 'jason', 'sex': 'male'}
dic['age'] = 19
# upd*te
(*改成a)
dic = {'age': 18, 'name': 'jason', 'sex': 'male'}
dic2 = {'hobby':'girls','abc':123}
dic.upd*te(dic2) #dic2不变,dic2的内容追加到dic中
dic.upd*te([(1,'a'),(2,'b')]) #列表中的元组作为两个键值对依次加入到原字典的最后
dic.upd*te(weight=60,height=160) #同上,在结尾依次插入
4、查
# 通过键查询值,直接dic[key](没有此键会报错)
dic = {'age': 18, 'name': 'jason', 'sex': 'male'}
print(dic['name']) #jason
dic = {'age': 18, 'name': 'jason', 'sex': 'male'}
print(dic.keys()) #dict_keys(['age', 'name', 'sex']) # 注意<class 'dict_keys'>
print(dic.values()) #dict_values([18, 'jason', 'male'])
print(dic.items()) #dict_items([('age', 18), ('name', 'jason'), ('sex', 'male')])
for i in dic:
print(i)
for i in dic.keys(): #两者输出的都是键,想要输出value用for i in dic.values():
print(i)
for i in dic.items():
print(i) #('age', 18)
('name', 'jason')
('sex', 'male') 每两个间换行
for i,j in dic.items():
print(i,j) #age 18 (换行) name jason (换行) sex male
# get
v = dic.get('name')
print(v) # jason
v = dic.get('name1')
print(v) # None
v = dic.get('name2','没有此键')
print(v) # 没有此键
