字典的基本使用和方法
一、字典的定义
(1)字典:用{}来标识
(2)字典的结构:就是将它看做作是一个{key:value},键:值对的集合,
(3)包含两个元素用“,”间隔,每个元素是用 键key和值value组成的,中间用“:”间隔
(4)同一个字典中的key是唯一的(不能存在重复的key)
(5)字典中的key只能是不可变类型的数据(数值、字符串、元组),通常 都是使用字符串;
(6)当存在相同key时,不会报错,但只会输出最后一个key
(7)value:字典中的value可以保存任何类型的数据
(8)空字典:{}
二、字典的定义方式
方式一:使用“:”
dic = {'name': '逍遥', 'age': 18}
方式二:不使用“:”
dic = dict(name = '逍遥',
age = 18,
name1 = '向日葵')
print(dic)
运行结果:{‘name’: ‘逍遥’, ‘age’: 18, ‘name1’: ‘向日葵’}
方式三:将多个元组,快速的转换成字典
dic = dict(
[('name','逍遥'),('age',18),('name1','向日葵')]
)
print(dic)
运行结果:{‘name’: ‘逍遥’, ‘age’: 18, ‘name1’: ‘向日葵’}
三、字典的操作方法(增删查改)
1、添加操作:通过键直接进行赋值
dic = {'name':'xiaoyao','name1':'cmq','name2':'FENG'}
dic['name3'] = '小白'
print(dic)
运行结果:{‘name’: ‘xiaoyao’, ‘name1’: ‘cmq’, ‘name2’: ‘FENG’, ‘name3’: ‘小白’}
注意点:
1)字符串、列表、元组,支持下标操作,可以下标取值和切片
2)字典是不支持下标取值和切片
2、修改操作:通过键直接进行赋值
# 无则增,有则改;字典是无顺序的
dic = {'name':'xiaoyao','name1':'cmq','name2':'FENG'}
dic['name'] = '女子'
print(dic)
运行结果:{‘name’: ‘女子’, ‘name1’: ‘cmq’, ‘name2’: ‘FENG’}
3、查询操作
方式一:直接通过键去获取,该方法如果键不存在,会报keyerror
dic = {'name':'xiaoyao','name1':'cmq','name2':'FENG'}
print(dic['name'])
运行结果:xiaoyao
dic = {'name':'xiaoyao','name1':'cmq','name2':'FENG'}
print(dic['111'])
运行结果:KeyError: ‘111’(通过key去获取值,没有键报错keyerror)
方式二:get 直接通过键去获取,如果键不存在,返回None(None:空)
dic = {'name':'xiaoyao','name1':'cmq','name2':'FENG'}
print(dic.get('name'))
运行结果:xiaoyao
dic = {'name':'xiaoyao','name1':'cmq','name2':'FENG'}
print(dic.get('111'))
运行结果:None
4、删除操作
方式一:pop 通过指定键删除对应的键值对
dic = {'name':'xiaoyao','name1':'cmq','name2':'FENG'}
dic.pop('name')
print(dic)
运行结果:{‘name1’: ‘cmq’, ‘name2’: ‘FENG’}
方法二:popitem 删除最近一个添加的键值对(3.5以前的python是随机的)
dic = {'name':'xiaoyao','name1':'cmq','name2':'FENG'}
print(dic.popitem())
print(dic)
运行结果:(‘name2’, ‘FENG’)
{‘name’: ‘xiaoyao’, ‘name1’: ‘cmq’}
方法三:del 关键字进行删除
dic={'ee':14,"jj":22,"kk":33}
del dic['jj']
print(dic)
运行结果:{‘ee’: 14, ‘kk’: 33}
方法四:clear 清空字典
dic = {'name':'xiaoyao','name1':'cmq','name2':'FENG'}
dic.clear()
print(dic)
运行结果:{}
四、字典的其他方法
1、keys():获取字典中所有的键
# dict_keys是字典里的数据类型,不是python常用的数据类型,可以转换成列表打印出来
dic = {'name':"逍遥",'age':18,'sex':"男"}
res1 = dic.keys()
print(res1)
print(list(res1))
运行结果:dict_keys([‘name’, ‘age’, ‘sex’])
[‘name’, ‘age’, ‘sex’]
2、values():获取字典中所有的值
dic = {'name':"逍遥",'age':18,'sex':"男"}
res2 = dic.values()
print(list(res2))
运行结果:[‘逍遥’, 18, ‘男’]
3、items():经常使用到:获取字典的键值对(每个键值对会转换为一个元组)
"""
生成的数据类型是 列表嵌套元组,每一个元组都是字典的键值对,
字典的键是元组的第一个元素,字典的值是元组的第二个元素;
"""
dic = {'name':"逍遥",'age':18,'sex':"男"}
res3 = dic.items()
print(list(res3))
运行结果:[(‘name’, ‘逍遥’), (‘age’, 18), (‘sex’, ‘男’)]
4、update():往字典中添加多个键值对(把一个字典添加到另一个字典中)
"""
1、如果字典中存在重复的键,后进来的会把前边的覆盖掉
2、无则增有则改
3、该方法类似于extend方法,往列表中添加多个元素
"""
dic = {'name':"逍遥",'age':18,'sex':"男"}
dic.update({'aa':11,'bb':22,'cc':22})
print(dic)
运行结果:{‘name’: ‘逍遥’, ‘age’: 18, ‘sex’: ‘男’, ‘aa’: 11, ‘bb’: 22, ‘cc’: 22}
集合的基本使用
一、集合的定义
定义:花括号或者set()函数可以用来创建集合。
集合中的数据只能是不可变类型:数值 字符串 元组(其它类型会报错)
注意:要创建一个空集合只能有set()而不能用{},因为后者是创建一个空字典
二、集合的方法
1)添加元素:add
set2 = {11,22}
set2.add(999)
set2.add(100)
print(set2)
运行结果:{11, 100, 22, 999}
2)删除元素:remove
set2 = {11,22}
set2.remove(11)
print(set2)
运行结果:{22}
三、集合的特性
1)集合中的元素是无序的
# 打印出的内容与定义的不一样,没有顺序,无法“切片”和“索引取值”
set2 = {11,2222,33,3333,'aa','bb','逍遥'}
print(set2)
运行结果:{33, 3333, ‘逍遥’, 11, ‘aa’, 2222, ‘bb’}
2)集合中的元素不能重复(和数学中的集合一样的)
# 运行后相同的元素只会保留一个
set2 = {11,11,2222,33,3333,11,22,33,11,22,22,'aa','bb','逍遥'}
print(set2)
运行结果:{33, 3333, 11, 2222, ‘逍遥’, ‘aa’, 22, ‘bb’}
#集合和字典是无序的
# hash算法加密,按对应规则进行存储
# 字典是对key进行hash
# 集合中是直接对集合中的数据进行hash
# 只有不可变类型的数据才能进行hash
四、集合特性的用法
快速去除列表中重复的元素
# 通过集合可以去除列表中的重复元素
li1=[11,222,11,22,11,222,33]
print("原来的li1:")
print(li1)
# 1.先将列表转换为集合
s=set(li1)
print("1.先将列表转换为集合:")
print(s)
# 2.然后再把集合转换为列表
li2=list(s)
print("2.然后再把集合转换为列表:")
print(li2)
运行结果:
原来的li1:
[11, 222, 11, 22, 11, 222, 33]
1.先将列表转换为集合:
{33, 11, 222, 22}
2.然后再把集合转换为列表:
[33, 11, 222, 22]
数据类型总结
1.按数据结构分类
(1)数值类型:整数 浮点数 布尔值
(2)序列类型:字符串 列表 元组
(3)散列类型:字典 集合
2.数据类型的可变不可变
不可变类型:数值类型 字符串 元组
字符串和元组定义后不能修改内部结构或者值(内在单元中值为不可变类型)
可变类型:列表、字典、集合
如何区分可变和不可变类型:定义一个集合,把数据放到集合中看不会报错
1、打印报错,就是可变类型;
2、打印不报错,就是不可变类型;
3、集合中只能存在不可变类型的数据;
set1 = {[1,2,3],[1,2]} # 集合中是列表
print(set1)
运行结果:TypeError: unhashable type: ‘list’
set2 = {{'Name':'逍遥'},{'Age':18}} # 集合中是字典
print(set2)
运行结果:TypeError: unhashable type: ‘dict’
set3 = {{1,2,3},{1,2}} # 集合中是集合
print(set3)
运行结果:TypeError: unhashable type: ‘set’
set4 = {1,2,3,4,5} # 集合中是数值
print(set4)
set5 = {'sdda','asddd','ssaaa'} # 集合中是字符串
print(set5)
set6 = {(1,2,3),(1,2,3,4)} # 集合中是元组
print(set6)
运行结果:{1, 2, 3, 4, 5}
{‘asddd’, ‘sdda’, ‘ssaaa’}
{(1, 2, 3, 4), (1, 2, 3)}