01.python数据类型之字典
-
字典的初识
- 容器类数据类型 dict
- 可变数据类型
- 因为列表查询速度较慢且数据之间关联性不强,出现了字典
- 字典
- {} 键值对形式存储
- 键必须是不可变的数据类型:int,str,bool,tuple
- 字典3.5x版本之前(包括3.5)是无序的
- 字典3.6x会按照初次建立字典的顺序排列,学术上不认为是有序的
- 字典3.7x以后都是有序的
- 字典的优点:查询速度非常快,存储关联性的数据
- 字典的缺点:以空间换时间
- 键要不可变的数据类型且是唯一的
-
字典的创建方式
# --encoding:utf-8 --""" Create on 2019/7/26 0026 15:51 """ #字典的创建方式 #方式一: #面试会考 #dic = dict((('one',1),('two',2),('three',3))) #print(dic) #{'one': 1, 'two': 2, 'three': 3} #方式二: #dic = dict(one = 1,two = 2,three = 3)#{'one': 1, 'two': 2, 'three': 3} #dic1 = dict(name='alex',age=18,sex='男')#{'name': 'alex', 'age': 18, 'sex': '男'} #print(dic1) #方式三: dic = {'one':1,'two':2,'three':3} print(dic) #{'one': 1, 'two': 2, 'three': 3} #方式四 dic = dict(zip(['one', 'two', 'three'],[1, 2, 3])) #拉链操作 print(dic) #{'one': 1, 'two': 2, 'three': 3} #方式五 dic = { k: v for k,v in [('one', 1),('two', 2),('three', 3)]} #字典推导式 print(dic) #{'one': 1, 'two': 2, 'three': 3} #方式六 dic = dict.fromkeys('abcd','太白') print(dic) #{'a': '太白', 'b': '太白', 'c': '太白', 'd': '太白'}
-
字典的增删改查
--encoding:utf-8 --
"""
Create on 2019/7/26 0026 16:00
"""
dic = {'name':'taibai','age':18}增
直接增加 有则改之,无则增加
dic['sex'] = '男'
dic['age'] =24 #{'name': 'taibai', 'age': 24}
print(dic)
setdefault 有则不变,无则增加
dic.setdefault('hobby','学习') #{'name': 'taibai', 'age': 18, 'hobbie': '学习'}
dic.setdefault('age',48) #{'name': 'taibai', 'age': 18}
print(dic)
删
pop 按照键删除键值对,有返回值
设置第二个参数则无论字典中有无此键都不会报错
dic.pop('age') #{'name': 'taibai'}
ret = dic.pop('age') #18 有返回值
ret = dic.pop('hobby','没有此键')
print(ret)
print(dic)
clear 清空
dic.clear()
print(dic)
del
del dic['age'] #{'name': 'taibai'}
print(dic)
改
dic['name'] = 'alex' #{'name': 'alex', 'age': 18}
print(dic)
查
print(dic['age'])
get
l1 = dic.get('hobby','学习') #可以设置返回值
print(dic)
print(l1)
三个特殊
keys() #可以转化为列表 可以循环
print(dic.keys())#dict_keys(['name', 'age'])
print(list(dic.keys()))
values() #可以转化为列表 可以循环
print(dic.values())#dict_values(['taibai', 18])
print(list(dic.values())) #['taibai', 18]
items()
print(dic.items()) #dict_items([('name', 'taibai'), ('age', 18)])
print(list(dic.items())) #[('name', 'taibai'), ('age', 18)]
for i,j in dic.items():
print(i,j) #name taibai age 18
面试题
a = 18
b = 12
a,b = b,a
print(a,b) -
字典的嵌套
02.内容回顾
- 列表:容器型的数据类型,可以承载大量的数据,有序的数据
- 增:
- append 追加(在最后)
- insert 在指定位置添加
- extend 迭代着添加
- 删:
- pop 按照索引删除,有返回值 默认删除最后一个
- remove 按照元素删除
- clear 清空列表
- del 索引,切片(步长)
- 改:
- 查:索引,切片,for循环
- 增:
- 元祖:只读列表,拆包
- range:可以自己控制范围的数字列表,但是它不是列表
03.数据类型的分类
- 可变(不可哈希)的数据类型:list(列表) dict(字典) set(集合)
- 不可变(可哈希)的数据类型:str(字符串) bool(布尔值) int(整形) tuple(元祖)
04.相关练习
# --encoding:utf-8 --
"""
Create on 2019/7/26 0026 17:47
"""
'''
dic = {
'name':'汪峰',
'age':48,
'wife':[{'name':'国际章','age':38}],
'children':{'girl_first':'小苹果','girl_second':'小怡','girl_three':'顶顶'}
}
1. 获取汪峰的名字。
2.获取这个字典:{'name':'国际章','age':38}。
3. 获取汪峰妻子的名字。
4. 获取汪峰的第三个孩子名字。
'''
dic = {
'name':'汪峰',
'age':48,
'wife':[{'name':'国际章','age':38}],
'children':{'girl_first':'小苹果','girl_second':'小怡','girl_three':'顶顶'}
}
#1. 获取汪峰的名字。
#k1 = dic.get('name')
#print(k1)
#2.获取这个字典:{'name':'国际章','age':38}。
k2 = dic.get('wife')[0]
print(k2)
#3. 获取汪峰妻子的名字。
#k3 = dic.get('wife')[0]['name']
#print(k3)
#4. 获取汪峰的第三个孩子名字
k4 = dic['children']['girl_three']
print(k4)
# --encoding:utf-8 --
"""
Create on 2019/7/26 0026 17:24
"""
'''
dic1 = {
'name':['alex',2,3,5],
'job':'teacher',
'oldboy':{'alex':['python1','python2',100]}
}
1,将name对应的列表追加⼀个元素’wusir’。
2,将name对应的列表中的alex⾸字⺟⼤写。
3,oldboy对应的字典加⼀个键值对’⽼男孩’,’linux’。
4,将oldboy对应的字典中的alex对应的列表中的python2删除
'''
dic1 = {
'name':['alex',2,3,5],
'job':'teacher',
'oldboy':{'alex':['python1','python2',100]}
}
#1,将name对应的列表追加⼀个元素’wusir’。
#dic1['name'].append('wusir')
#print(dic1)
#2,将name对应的列表中的alex⾸字⺟⼤写
#dic1['name'][0].capitalize()
#print(dic1)
#3,oldboy对应的字典加⼀个键值对’⽼男孩’,’linux’。
# dic1['oldboy']['老男孩'] = 'linux'
# print(dic1)
#4,将oldboy对应的字典中的alex对应的列表中的python2删除
# dic1['oldboy']['alex'].pop(-2)
# print(dic1)
'''
dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}
请在字典中添加一个键值对,"k4": "v4",输出添加后的字典
请在修改字典中 "k1" 对应的值为 "alex",输出修改后的字典
请在k3对应的值中追加一个元素 44,输出修改后的字典
请在k3对应的值的第 1 个位置插入个元素 18,输出修改后的字典
'''
dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}
#请在字典中添加一个键值对,"k4": "v4",输出添加后的字典
#dic['k4'] = 'v4'
#print(dic)
#请在修改字典中 "k1" 对应的值为 "alex",输出修改后的字典
#dic['k1'] = 'alex'
#print(dic)
#请在k3对应的值中追加一个元素 44,输出修改后的字典
dic.get('k3').append(44)
print(dic)
#dic['k3'].append(44)
#print(dic)
#请在k3对应的值的第 1 个位置插入个元素 18,输出修改后的字典
dic['k3'].insert(1,18)
print(dic)