dict
一:字典的定义
#字典的定义,用{},且必须是 key:value 一对值
dict1 = {} #空字典
dict2 = dict() #空字典
dict3 = {'id':'123456','name':'lucky'}
print(dict3) #结果为:{'id': '123456', 'name': 'lucky'}
二:字典涉及到的符号
#字典中 ’+‘号 和 ’*‘号 不可用
#in 和 not in 用于判断元素有没有在字典的key中出现,返回True、False
dict1 = {'id':'123456','name':'lucky'}
result = 'id' in dict1
print(result) #结果为:True
#is 和 not is 用于判断地址是否一致,返回True、False
dict2 = {'age':18,'sex':'女'}
result1 = dict1 is dict2
print(result1) #结果为:False
三:python字典函数
#len(dict) 返回字典中有几对值
dict1 = {'id':'123456','name':'lucky'}
result = len(dict1)
print(result)
#dict(list/tuple) 进行强制转换
#可以将list、tuple转换成字典,但前提是元素都要成对出现像下面这样
dict4 = dict([('id1','123456'),('name1','lucky')])
dict5 = dict((('id2','123456'),('name2','lucky')))
print(dict4) #结果为:{'id1': '123456', 'name1': 'lucky'}
print(dict5) #结果为:{'id2': '123456', 'name2': 'lucky'}
四:字典自身的方法
#增加元素 dict[key] = value 注意:key值不可以重复,重复的话就会覆盖
dict1 = {'id':'123','name':'谢富中'}
dict1['age'] = 18 #添加
print(dict1) #结果为:{'id': '123', 'name': '谢富中', 'age': 18}
#修改元素value的值 dict[key] = newvalue 这里key值要在dict中出现
dict1 = {'id':'123','name':'谢富中'}
dict1['id'] = '456' #修改id的value值
print(dict1) #结果为:{'id': '456', 'name': '谢富中'}
#查询元素
#1.根据key获取值,dict[key] ----> value 但是如果key在字典中没有存在则报出keyError
dict1 = {'id':'123','name':'谢富中'}
print(dict1['id']) #结果为:123
print(dict1['age']) #结果为:KeyError: 'age'
#2.推荐使用 字典的内置函数
#dict.get(key) ----> value 如果取不到值不会报错,返回None
#dict.get(key[,default]) ----> value 如果能够取到值则返回字典中的值,如果取不到则返回default的值
dict2 = {'id':'123','name':'谢富中'}
print(dict2.get('id')) #结果为:123
print(dict2.get('age')) #结果为:None
print(dict2.get('age',18)) #结果为:18
#查询时还会用到的三个函数:items() values() keys() 这些都是将字典转换成了列表进行使用
dict3 = {'id':'123','name':'谢富中','age':18}
result1 = dict3.items()
print(result1) #结果为:dict_items([('id', '123'), ('name', '谢富中'), ('age', 18)])
result2 = dict3.values()
print(result2) #结果为:dict_values(['123', '谢富中', 18])
result3 = dict3.keys()
print(result3) #结果为:dict_keys(['id', 'name', 'age'])
#这些一般都用于for循环中
#items举例:
for key,value in dict3.items():
print(key,value) #结果为:id 123
# name 谢富中
# age 18
for i in dict3.items():
print(i) #结果为:('id', '123')
# ('name', '谢富中')
# ('age', 18)
#删除元素 有四种
#1.del dict[key]
dict1 = {'id':'123','name':'谢富中','age':18}
del dict1['id']
print(dict1) #结果为:{'name': '谢富中', 'age': 18}
#2.dict.pop(key[,default]) 根据key删除字典中的键值对,返回值是 只要成功,则返回键值对的值value
#pop 的默认值往往是在删除的时候没有找到对应的key,则返回defaul默认值
dict1 = {'id':'123','name':'谢富中','age':18}
result1 = dict1.pop('id')
print(dict1,result1) #结果为:{'name': '谢富中', 'age': 18} 123
result2 = dict1.pop('sex','男')
print(result2) #结果为:男
#3.dict.popitem() 随机删除字典中键值对(一般从末尾删除元素)
dict1 = {'id':'123','name':'谢富中','age':18}
result1 = dict1.popitem()
print(result1) #结果为:('age', 18)
print(dict1) #结果为:{'id': '123', 'name': '谢富中'}
#4.clear() 清空字典
dict1 = {'id':'123','name':'谢富中','age':18}
dict1.clear()
print(dict1) #结果为:{}
#其他内置函数
#update() 相当于合并操作 相同的key进行覆盖,没有的加上
dict1 = {'id':'123','name':'谢富中','age':18}
dict2 = {'id':'456','sex':'男'}
dict1.update(dict2)
print(dict1) #结果为:{'id': '456', 'name': '谢富中', 'age': 18, 'sex': '男'}
#dict.fromkeys(seq[,default]) ----->将seq转成字典的形式,如果没有默认指定的value则用None
#如果指定default,则用default代替None这个value值
list1 = ['aa','bb','cc']
dict1 = dict.fromkeys(list1)
print(dict1) #结果为:{'aa': None, 'bb': None, 'cc': None}
dict2 = dict.fromkeys(list1,10)
print(dict2) #结果为:{'aa': 10, 'bb': 10, 'cc': 10}