XX学Python·字典
字典
-
以键值对形式存储,方便快速存取,字典的键要见名知意。字典占用空间远大于列表,牺牲空间利用快速存取的特性。
-
字典是无序的,因为不能通过索引进行键值对获取。Python3.5以后,字典中键值对顺序和我们插入顺序一致,但该顺序没法被利用。
-
字典定义格式:变量={键1:值1, 键2:值2...},空字典dict2 = {},或dict()方法定义。字典的键必须是不可变类型。数字、字符串、元组是不可变的。
dict1 = {'name': 'xiaoming', 'age': 18, 'gender': '女'} dict2 = {} print(dict1) print(dict2) # 字典中键是唯一的,不能有重复的键,否则后定义的键值会覆盖前面的。值可以重复。 dict3 = {'name': 'xiaoming', 'age': 18, 'id': 18, 'name': 'rose'} print(dict3) # {'name': 'rose', 'age': 18, 'id': 18}前面xiaoming被换成rose
字典的'增'和’改‘
# 字典变量[key] = value dict1 = {'name':'xx', 'age':18} dict1['gender'] = '男' # 若原字典不存在该key,则新增 print(dict1) # {'name': 'xx', 'age': 18, 'gender': '男'} dict1['name'] = 'lsl' # 若原字典存在该key,则修改原key所对应的值 print(dict1) # {'name': 'lsl', 'age': 18, 'gender': '男'} # update方法格式:update({key:值})或update(key=值) dict1.update({'id': '001'}) # 没有key则新增 print(dict1) # {'name': 'lsl', 'age': 18, 'gender': '男', 'id': '001'} dict1.update({'name': 'rose'}) # 有key则修改 print(dict1) # {'name': 'rose', 'age': 18, 'gender': '男', 'id': '001'} dict1.update(name='mx') # 不用{}的形式:update(key=值) print(dict1) # {'name': 'mx', 'age': 18, 'gender': '男', 'id': '001'} # update一般用于两个字典拼接,格式:字典1.update(字典2) dict2 = {'w': 45, 'h': 170} dict1.update(dict2) print(dict1) # {'name': 'mx', 'age': 18, 'gender': '男', 'id': '001', 'w': 45, 'h': 170}
字典的‘删‘
dict1 = {'name': 'xx', 'age': 18, 'gender': '男'} # 格式:del 字典[key],根据键进行键值对的删除 del dict1['gender'] print(dict1) # {'name': 'xx', 'age': 18} # clear()方法清空字典 dict1.clear() print(dict1) # {} # 字典.pop(key),删除指定键的键值对,会返回要删除的键对应的值。 dict2 = {'name': 'xx', 'age': 18, 'gender': '男'} print(dict2.pop('gender')) # 男 print(dict2) # {'name': 'xx', 'age': 18} # popitem(),随机删除一对,尝试后发现总是删除最后一对,以元组的形式返回删除的键值对。 dict3 = {'name': 'xx', 'age': 18, 'gender': '男'} print(dict3.popitem()) # ('gender', '男') print(dict3.popitem()) # ('age', 18) print(dict3) # {'name': 'xx'}
字典的’查‘
dict1 = {'name':'xx', 'age':18} # 查询方式一:dict[key],查询的key不存在会报错 print(dict1['name']) # xx # print(dict1['gender']) # KeyError: 'gender' # 查询方式二:dict.get(key,查询key不存在时返回的内容),key不存在时默认返回None print(dict1.get('name')) # xx print(dict1.get('gender')) # None print(dict1.get('gender', '不存在此键')) # 不存在此键 # keys 获取当前字典所有的键 print(dict1.keys()) # dict_keys(['name', 'age']) print(type(dict1.keys())) # <class 'dict_keys'> # keys返回的内容是dict_keys类型,不能直接用索引查询,但可以进行for遍历 keys_1 = dict1.keys() # print(keys_1[1]) # TypeError: 'dict_keys' object is not subscriptable for i in keys_1: # 可以被迭代 print(i) # name 换行后 age # values 获取当前字典所有的值 print(dict1.values()) # dict_values(['xx', 18]),可以进行for遍历 print(type(dict1.values())) # <class 'dict_values'> # items 获取当前字典所有的键值对 print(dict1.items()) # dict_items([('name', 'xx'), ('age', 18)]) print(type(dict1.items())) # <class 'dict_items'>,可以进行for遍历
字典的遍历
dict1 = {'name': 'Tom', 'age': 20, 'gender': 'male'} # 使用for循环对字典进行遍历,默认获取字典的每一个键 for i in dict1: print(i) # name 换行后 age 换行后 gender for i in dict1.keys(): print(i) # 同上获取每一个键 for i in dict1.values(): print(i) # 获取的是每一个值 for i in dict1.items(): print(i) # 获取字典每一对键值对组成的元组,结果如下 ''' ('name', 'Tom') ('age', 20) ('gender', 'male') ''' # 分别拿到字典的键和值 for i in dict1: print(i, dict1[i]) for key,value in dict1.items(): print(key, value) '''两个结果都如下 name Tom age 20 gender mal '''
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」