持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第3天,点击查看活动详情
字典
- Python内置的数据结构之一,与列表一样是一个可变序列(可以增删改查的序列)
- 以键值对的方式存储数据,字典是一个无序的序列
字典的实现原理
字典的实现原理与查字典类似,查字典是先根据部首或拼音查找相应的页码,Python中的字典是根据key查找value所在的位置
字典的创建
# 用{}创建字典
socres = {'张三': 100, '李四': 98, '王五': 43}
print(socres)
print(type(socres))
# 第二种创建dict()
student = dict(name='jack', age=20)
print(student)
字典的常用操作
字典中元素的获取
获取字典中的元素 1:socres['张三'] 2:gets()方法。socres.get('张三')
[]取值与使用get()取值的区别
- []如果字典中不存在指定的key,抛出keyError异常
- get()方法取值,如果字典中不存在指定的key,并不会抛出KeyError而是返回Nobe,可以通过参数设置默认的value,以便指定的key不存在时返回
key的判断,使用in和not in 指定的key在字典中存在返回True和在指定的key在字典中不存在返回True
字典元素的删除 del sorces['张三'] (删除指定的键值对key-value)
字典元素的新增 sorces['Jack']=90
获取字典视图的三个方法
key() : 获取字典中所有的Key
value():获取字典中所有的value
items(): 获取字典中所有的键值对key-value
字典元素的遍历
scores = {'张三': 100, '李四': 98, '王五': 43}
for item in scores:
print(item, scores[item], scores.get(item))
张三 100 100
李四 98 98
王五 43 43
字典的特点
- 字典中的所有元素都是一个key-value对,key不允许重复,value可以重复
- 字典中的元素是无序的
- 字典中的key必须是不可变对象
- 字典也可以根据需要动态的伸缩
- 字典会浪费较大的内存,是一种使用空间换时间的数据结构
字典生成式
内置函数zip():用于将可迭代的对象作为参数,将对象中对应的元素打包成一个元组,然后返回由这些元组组成的列表
#元素键值对一一对应,多余的不管
items = ['Fruit', 'Books', 'Others']
prices = [96, 78, 85, 100, 120]
d = {item: price for item, price in zip(items, prices)}
print(d)
#{'Fruit': 96, 'Books': 78, 'Others': 85}
#大写
items = ['Fruit', 'Books', 'Others']
prices = [96, 78, 85, 100, 120]
d = {item.upper(): price for item, price in zip(items, prices)}
print(d)
#{'FRUIT': 96, 'BOOKS': 78, 'OTHERS': 85}
元组
什么是元组
元组:Python内置的数据结构之一,是一个不可变序列
不可变序列与可变序列
- 不可变序列:字符串,元组(没有增删改查的操作)
- 可变序列:列表,字典(可以对序列执行增删改查操作,对象地址不发生更改)
元组的创建方式
- 直接小括号
- 使用内置函数tuple()
- 只包含一个元组的元素需要使用逗号和小括号 t=(10,)
"""第一种创建方式,使用()"""
t = ('Python', 'World', 98) #括号可以省略不写
print(t)
print(type(t))
"""第二种创建方式,使用内置函数tuple()"""
t1 = tuple(('Python', 'World', 98))
print(t1)
print(type(t1))
"""
('Python', 'World', 98)
<class 'tuple'>
('Python', 'World', 98)
<class 'tuple'>
"""
为什么要将元组设置成不可变序列
- 在多任务环境下,同时操作对象时不需要加锁
- 因此,在程序中尽量使用不可变序列
注意事项:元组中存储的是对象的引用
- 如果元组中对象中是不可变对象,则不能再引用其他对象
- 如果元组中的对象是可变对象,则可变对象的引用不允许改变,但是数据可以改变
遍历元组
t = ('Python', 'World', 98)
for item in t:
print(item)
"""
Python
World
98
"""