持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第7天,点击查看活动详情
大家好,我是木大木大,因为疫情和环境原因啊,在家开始了自学python的路子,从此深坑加一人。后面我会每天持续更新一些学习python的过程,当然一开始就是一些基础啦,希望大家多多支持,莫嫌弃啦~
字典
1.1 散列类型(哈希类型)
1.数值类型:int,float,bool——》存储一个数值
2.序列类型:str,list,tuple——》存储多个数据
3.散列类型:
特征
3.1无序
3.2内部元素不重复
1.1.1 字典 dict
保存一些有典型的对应关系的数据类型,特点就是用键值对的方式来存储数据
键值:拼音就是key(键),字就是value(值)
通讯录的存储
name = ['木大','乃荣','大力','久违']
call = ['1134','1135','1136','1137']
什么是键值对
键值对的语法:key:value
'小川':'1134'
call = {'木大':1134,'久违':1135,'乃荣':1136}
user = {'姓名':'木大','年龄':18,'工作':'工程师'}
字典是无序的,没有下标,可以通过键来取值
字典名[键]
字典是不重复的,字典的键(key)是不可以重复的,如果重复的话则取最后一个重复键的值
dict1 = {'a':1,'b':2,'a':3,'a':4,'a':5}
print(dict1) # 默认取重复键的最后一个 {'a': 5, 'b': 2}
# 字典的值是可以发生改变的,根据键改变值
dict1['b'] = 100
print(dict1) # {'a': 5, 'b': 100}
key是字典的关键数据
通过key访问value
scores = {'语文':89}
print(scores['语文']) # 89
通过key添加key-value对
# 如果要为字典添加键值对,只需要为不存在的key赋值就可以
scores['数学'] = 93
scores[92] = 5.7
print(scores) # {'语文': 89, '数学': 93, 92: 5.7}
通过key删除key-value对
del scores['语文']
del scores['数学']
print(scores) # {92: 5.7}
通过key修改key-value对
cars = {'BMW':88,'benchi':83,'tesila':95}
cars['benchi'] = 4.3
cars['tesila'] = 3.8
print(cars) # {'BMW': 88, 'benchi': 4.3, 'tesila': 3.8}
通过key判断key-value对是否存在
in或者not in都是基于key来判断的
print('tesila' in cars) # True
print('baoshijie' in cars) # False
print('BYD' not in cars) # True
字典的key可以是任意的不可变类型
字典的常用方法
1.clear()
用于清空字典中所有的键值对
cars = {'BMW':88,'benchi':83,'tesila':95}
print(cars) # {'BMW': 88, 'benchi': 83, 'tesila': 95}
cars.clear()
print(cars) # {}
2.get()
根据key获取value,使用get方法访问不存在的key时,会返回一个None,不会报错,如果使用的时方括号访问并不存在的key的时候,会报错
cars = {'BMW':88,'benchi':83,'tesila':95}
print(cars.get('BMW')) # 88
print(cars.get('baoshijie')) # None
print(cars['baoshijie']) # 报错
3.update()
可以使用一个字典所包含的key-value对来更新已有的字典
cars = {'BMW':88,'benchi':83,'tesila':95}
cars.update({'BMW':4.5,'baoshijie':9.3})
print(cars) # {'BMW': 4.5, 'benchi': 83, 'tesila': 95, 'baoshijie': 9.3}
4.items()、keys()、values()
items()
cars = {'BMW':88,'benchi':83,'tesila':95}
ims = cars.items()
print(ims) # dict_items([('BMW', 88), ('benchi', 83), ('tesila', 95)])
print(type(ims)) # <class 'dict_items'>
print(list(ims)) # [('BMW', 88), ('benchi', 83), ('tesila', 95)]
# 访问第2个键值对
print(list(ims)[1]) # ('benchi', 83)
keys()
cars = {'BMW':88,'benchi':83,'tesila':95}
kys = cars.keys()
print(kys) # dict_keys(['BMW', 'benchi', 'tesila'])
print(type(kys)) # <class 'dict_keys'>
print(list(kys)) # ['BMW', 'benchi', 'tesila']
# 访问第2个key
print(list(kys)[1]) # benchi
values()
cars = {'BMW':88,'benchi':83,'tesila':95}
vals = cars.values()
print(vals) # dict_values([88, 83, 95])
print(type(vals)) # <class 'dict_values'>
print(list(vals)) # [88, 83, 95]
# 访问第2个值
print(list(vals)[1]) # 83
5.pop()
用于获取指定key对应的value,并且删除这个key-value对
cars = {'BMW':88,'benchi':83,'tesila':95}
print(cars.pop('tesila')) # 95
print(cars) # {'BMW': 88, 'benchi': 83}
6.setdefault()
也用于根据key获取对应的value值,如果这个键值对存在,则直接返回key对应的值,如果这个键值对不存在,则先为这个key设置默认的值,然后再返回这个key对应的value
cars = {'BMW':88,'benchi':83,'tesila':95}
print(cars.setdefault('baoshijie',92)) # 92
print(cars) # {'BMW': 88, 'benchi': 83, 'tesila': 95, 'baoshijie': 92}
print(cars.setdefault('BMW',34)) # 88
print(cars) # {'BMW': 88, 'benchi': 83, 'tesila': 95, 'baoshijie': 92}
字典的通用操作
1.长度
info = {'age':12,'shengming':True,'name':'阿呆'}
data = len(info)
print(data) # 3 3是3个键值对
2.索引(键)
info = {'age':12,'shengming':True,'name':'阿呆'}
print(info['age']) # 12
print(info['shengming']) # True
print(info['xxx']) # 报错
print(info.get('xxx')) # None
3.for循环
info = {'age':12,'shengming':True,'name':'阿呆'}
for item in info:
print(item) # 所有的键
for kys in info.keys():
print(kys) # 所有的键
for val in info.values():
print(val) # 所有的值
for k,v in info.items():
print(k,v) # 所有的键值
1.1.2 集合 set
用来保存不重复的元素,即集合中的元素都是唯一的,互不相同
{},相邻的元素用逗号分隔
语法:
集合名 = {数据1,数据2,数据3...数据n}#如果有重复数据,是不会被添加到内存空间里面,会默认去重
只能存储不可变数据类型
不能存储可变数据类型
print({{'a':1}}) # 报错
print({[1,2,3]}) # 报错
print({{1,2,3}}) # 报错
集合的数据是唯一的,对于集合中的每种数据元素,都只会保留一份
s = {1,2,1,(1,2,3),'c','c'}
print(s) #{1, 2, (1, 2, 3), 'c'}
set1 = {1,2,3,4,5,6,7,8,9,1,2,3,4,5}
print(set1) #{1, 2, 3, 4, 5, 6, 7, 8, 9}
print(set1[1]) # 报错,集合没有下标
print(type(set1)) # <class 'set'>
注意,创建空集合的时候必须使用set()而不能是{},因为{}默认是空字典
li1 = [] # 空列表
tu1 = () # 空元组
str1 = "" # 空字符串
dict1 = {} # 空字典
set1 = set() # 空集合
1.1.2.1 集合的数学运算
| 运算符操作 | python运算符 | 含义 | |
|---|---|---|---|
| 交集 | & | 取两集合公共的元素 | |
| 并集 | 取两集合全部的元素 | ||
| 差集 | - | 取一个集合中另一集合没有的元素 | |
| 成员运算 | in 和 not in | 判断一个某个元素是否在或者不在集合中 |
集合可以进行逻辑判断,集合的运算
集合1 & 集合2——》判断交集
集合1 | 集合2——》判断并集
集合1 - 集合2——》判断差集
交集:两个集合里面共同有的数据
并集:两个集合里面的全部数据
差集:集合1 - 集合2 减去共有的,剩下的就是差集【去掉交集之后的就是差集】
set1 = {1,2,3}
set2 = {3,4,5}
print(set1 & set2) # {3}
print(set1 | set2) # {1, 2, 3, 4, 5}
print(set1 - set2) # {1, 2} 取一个集合中另一个集合没有的元素,将set1中输入set2的元素删除
print(set2 - set1) # {4, 5}
print(3 in set2) # True
print(6 not in set1) # True
集合的作用:
1.存储非重复数据
2.用于将序列类型去重,逻辑判断(交集、并集、差集)
1.1.2.2 增
add()
参数为要添加的对象,通过多次添加数据可以发现添加后元素位置不确定
s = {'木大'}
s.add('木槿')
print(s)
s.add('阿宸')
print(s)
s.add('七零')
print(s)
s.add('乃荣')
print(s)
s.add('久违')
print(s)
1.1.2.3 删
1.pop() 随机删除一个元素
实际上在进行代码实验的时候并不是随机的
仅仅在集合元素是字符串类型时,并且在cmd运行的时候才会随机删除
平时在pycharm中默认保持删除第一个元素
s.pop()
print(s)
s.pop()
print(s)
2.remove()
有参数,参数为要删除的元素,如果元素不存在则报错
s.remove('1')
print(s) # 报错
3.discard()
跟remove类似,但是元素不存在也不会报错
s.discard('1')
print(s) # 元素不存在返回原值,不会报错
4.clear()
清空集合中的元素
s.clear()
print(s) # set()
5.del 集合名
可以删除集合
del s # 删除变量s
print(s) # 报错
今天的阅读就到这里啦,感谢大家的观看么么~