创建字典的几种方法
-
方式一
dic = dict(((1, 'a'), (2, 'b'))) print(dic)
-
方式二
dic = dict(a=1, b=2) print(dic)
-
方式三
dic = dict({'a':1, 'b':2}) print(dic)
验证字典的合法性
-
列表是不可哈希,键是不可变数据类型
dic = {[1,2,3]: 'a', 1: 777} print(dic)
-
键必须唯一
dic = {1:'alex', 1:'太白', 2: '哈哈'} # 此处键有重复
-
举例总结
dic = {'name': '太白', 'age': 18} # 键值对: # 酒店: # 键:房间号,0~99 (必须是不可变的数据类型,且唯一的) # 值: 房间:里边放什么数据都可以。
字典的增删改查
-
增
-
直接增加,有则改之,无则增加
dic = {'name': '太白', 'age': 18, 'hobby_list': ['足球', '羽毛球']} dic['sex'] = '男' # 增 dic['age'] = 23 # 改 print(dic)
-
setdefault:有则不变,无则增加
dic = {'name': '太白', 'age': 18, 'hobby_list': ['足球', '羽毛球']} dic.setdefault('age', 45) # 不会覆盖 dic.setdefault('hobby', '遛弯') # 追加 dic.setdefault('hh') # 键hh的值为None print(dic)
-
-
删
-
pop:按照键删除键值对,有返回值;设置第二个参数则无论字典中有无此键都不会报错。
dic = {'name': '太白', 'age': 18, 'hobby_list': ['足球', '羽毛球']} dic.pop('age') ret1 = dic.pop('age') ret2 = dic.pop('hobby', '没有此键') print(ret1) print(ret2) print(dic)
-
clear:清空
dic = {'name': '太白', 'age': 18, 'hobby_list': ['足球', '羽毛球']} dic.clear() print(dic)
-
del
dic = {'name': '太白', 'age': 18, 'hobby_list': ['足球', '羽毛球']} del dic['age1'] print(dic)
-
-
改
dic = {'name': '太白', 'age': 18, 'hobby_list': ['足球', '羽毛球']} dic['name'] = 'alex' print(dic)
-
查
dic = {'name': '太白', 'age': 18, 'hobby_list': ['足球', '羽毛球']} print(dic['hobby_list']) print(dic['hobby_list1']) # 没有此键会报错 # get *** l1 = dic.get('hobby_list') l2 = dic.get('hobby_list1', '没有此键sb') # 可以设置返回值 print(l1) print(l2)
三个特殊的
-
keys()
dic = {'name': '太白', 'age': 18, 'hobby_list': ['足球', '羽毛球']} print(dic.keys()) # 可以转化成列表 print(list(dic.keys())) for key in dic.keys(): print(key) for key in dic: print(key)
-
values()
dic = {'name': '太白', 'age': 18, 'hobby_list': ['足球', '羽毛球']} print(dic.values()) print(list(dic.values())) for value in dic.values(): print(value)
-
items()
dic = {'name': '太白', 'age': 18, 'hobby_list': ['足球', '羽毛球']} print(dic.items()) # 普通变量,item是元组 for item in dic.items(): print(item) # 元组拆包 a, b = ('name', '太白') print(a, b) # 元组拆分写法 for key, value in dic.items(): print(key, value)
面试题:一行代码完成a和b值互换
a = 18 b = 12 a,b = b,a print(a, b)
练习
dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}
# 请在字典中添加一个键值对,"k4": "v4",输出添加后的字典
dic.setdefault('k4', 'v4')
print(dic)
# 请在修改字典中 "k1" 对应的值为 "alex",输出修改后的字典
dic['k1'] = 'alex'
print(dic)
# 请在k3对应的值中追加一个元素 44,输出修改后的字典
dic.get('k3').append(44)
print(dic)
# 请在k3对应的值的第 1 个位置插入个元素 18,输出修改后的字典
dic.get('k3').insert(0, 18)
print(dic)
字典的嵌套
dic = {
'name':'汪峰',
'age':48,
'wife':[{'name':'国际章','age':38}],
'children':{'girl_first':'小苹果','girl_second':'小怡','girl_three':'顶顶'}
}
# 1. 获取汪峰的名字。
print(dic['name'])
print(dic.get('name'))
# 2.获取这个字典:{'name':'国际章','age':38}。
print(dic.get('wife')[0])
# 3. 获取汪峰妻子的名字。
print(dic.get('wife')[0].get('name'))
# 4. 获取汪峰的第三个孩子名字。
print(dic.get('children').get('girl_three'))
总结
- 字典:查询速度快,数据的关联性强。
- 键不可变数据类型(str、int、tuple、bool),唯一。
- 值:任意数据类型,对象。
- 增删改查(全部都要会默写)***
- 字典的嵌套。***