python中的字典

145 阅读7分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第7天,点击查看活动详情

大家好,我是木大木大,因为疫情和环境原因啊,在家开始了自学python的路子,从此深坑加一人。后面我会每天持续更新一些学习python的过程,当然一开始就是一些基础啦,希望大家多多支持,莫嫌弃啦~

字典

1.1 散列类型(哈希类型)

1.数值类型:intfloatbool——》存储一个数值
2.序列类型:strlisttuple——》存储多个数据
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)  # 报错

今天的阅读就到这里啦,感谢大家的观看么么~