Python的学习-6-字典及其常见操作

本文详细介绍了Python字典的各种操作,包括创建字典的方法,如基础创建、使用zip()和fromkeys(),以及如何通过键访问、修改和删除字典元素。此外,还讲解了字典的长度、键值对遍历以及更新和删除操作,最后探讨了字典的核心底层原理——散列表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

字典

字典是键值对的无序可变序列,字典中的每一个元素都是一个“键值对”,包含键对象和值对象。可以通过键对象实现快速获取,删除更新对应的值对象。

字典通过键对象找到对应的值对象,键是任意的不可变数据,比如:整数,浮点数,字符串,元组。但是:列表,字典,集合科协可变对象不能作为“键”,并且“键”不重复,值可以是任意数据,可重复。

字典的创建

基础方法{}和dict()
dic = {'name':'rain','age':'18','job':'student'}
dic_1 = dict(name='rain',age=18)
dic_2 = dict( [("first_name","last_name"),("age",18) ] )
print(dic)
print(dic_1)
print(dic_2)
"""
{'name': 'rain', 'age': '18', 'job': 'student'}
{'name': 'rain', 'age': 18}
{'first_name': 'last_name', 'age': 18}
"""
zip()创建字典对象

第一个参数为key,第二个参数为value。

key = ['name','age','job']
value = ['rain',18,'student']
dic = dict(zip(key,value))
print(dic)
"""
{'name': 'rain', 'age': 18, 'job': 'student'}
"""
fromkeys()创建字典对象

通过fromkeys()可以创建空值的字典对象。

a = dict.fromkeys( ['anme','age','job'] )
print(a)

字典元素的访问

通过“键”获取“值”
dic = {'name':'rain','age':'18','job':'student'}
print(dic['name'])
print(dic['job'])
"""
rain
student
"""
通过get()方法获得“值”

如果键不存在,返回NONE;也可以设定指定键不存在时默认返回的对象。

dic = {'name':'rain','age':'18','job':'student'}

print(dic.get('name'))
print(dic.get('age'))
print(dic.get('sex'))
print(dic.get('sex','Male'))#指定键不存在,返回"Male"

列出所有的键值对,键,值
#列出所有键值对
dic = {'name':'rain','age':'18','job':'student'}
print(dic.items())
"""
dict_items([('name', 'rain'), ('age', '18'), ('job', 'student')])
"""

#列出所有键
print(dic.keys())
"""
dict_keys(['name', 'age', 'job'])
"""

#列出所有值
print(dic.values())
"""
dict_values(['rain', '18', 'student'])
"""
len()获得键值对的个数;检测键是否在字典中
dic = {'name':'rain','age':'18','job':'student'}

print(len(dic))
print('name' in dic)

"""
3
True
"""

字典元素的添加,修改,删除

字典元素的添加

如果键已经存在,则覆盖旧的键值对;如果不存在则增加新的。

dic = {'name':'rain','age':'18','job':'student'}
dic['school'] = "STU"
print(dic)
"""
{'name': 'rain', 'age': '18', 'job': 'student', 'school': 'STU'}
"""
update()

使用update()将新字典中所有键值对全部添加到就字典对象上。如果key有重复,则直接覆盖。

a = {'name':'rain','age':18}
b = {'name':'rean','salary':8000}
a.update(b)
print(a)
"""
{'name': 'rean', 'age': 18, 'salary': 8000}
"""

字典元素的删除

可以使用del()方法,或者clear()删除所有键值对;pop()删除指定键值对,并返回对应值。

a = {'name':'rain','age':18}
b = {'name':'rean','salary':8000}
del (a['name'])
#也可以不加括号
#del a['name']
print(a)
print(b.pop('salary'))
popitem()随即删除和返回该键值对

因为字典没有顺序的概念,如果想要一个一个地移除并处理项,这个方法很有效。

a = {'name':'rain','age':18,'salary':8000}
print(a.popitem())
print(a)
print(a.popitem())
print(a)
print(a.popitem())
print(a)
"""
('salary', 8000)
{'name': 'rain', 'age': 18}
('age', 18)
{'name': 'rain'}
('name', 'rain')
{}
"""

序列解包(并列赋值)

序列解包用于字典时,默认是对”键“进行操作;如果需要对键值对操作,则需要使用items();如果要对值操作,则需要使用values()。

s = {'name':'rain','afe':18,'salary':6000,'school':'BTU'}
name,age,salary,school = s
print(name,age,salary,school)

name,age,salary,school = s.items()
print(name,age,salary,school)

name,age,salary,school = s.values()
print(name,age,salary,school)

字典核心底层原理

字典对象地核心是散列表。散列表是一个稀疏数组,数组地每个单元叫做bucket,每个bucket由两部分;一个是键对象地引用,一个是值对象的引用。所有的bucket结构和大小一致,可以通过偏移量来读取指定的bucket。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值