Python字典(dict)详解:从创建到操作全掌握
前言
-
字典是可变容器,可存储任意类型对象
-
字典以键(key)-值(value)对的形式进行映射,键值对用冒号分割,对之间用逗号分割
-
d = {key1 : value1, key2 : value2, key3 : value3 }
-
字典的数据是无序的
-
字典的键只能用不可变类型,且不能重复
-
字典的数据用键进行索引,不能用整数进行索引
字典(dict)是Python中非常重要的一种数据结构,它以键值对的形式存储数据,具有极高的查找效率。本文将带大家全面了解字典的创建、操作及特性,适合Python初学者系统学习。
一、字典的创建
字典使用花括号{}
创建,键值对之间用冒号:
分隔:
# 创建空字典
empty_dict = {}# 创建有初始值的字典
student = {"name": "张三","age": 20,"major": "计算机科学"
}
dict = {'a': [1, 2, 3]}
dict = {'b': {"bb": 222}}
dict = {(1, 2, 3):'壹贰伍'}# 字典的键只能用不可变类型,且不能重复
# d = {'a': 1, 'b': 2, 'a': 3} # 字典的键不能重复 d = {'a': 3, 'b': 2}
# d = {[1, 2, 3]: 'a'} # TypeError: unhashable type: 'list'# 使用dict()构造函数
d = dict() # d = {}
d = dict([("name", "小王"), ("age", 35)]) # {'name': '小王', 'age': 35}
d = dict(a=1, b=2, c=3) # {'a':1, 'b':2, 'c':3}
d = dict([1, 2, 3, 4]) # 错
teacher = dict(name="李老师", subject="数学")
注意:
-
字典是可变类型,但字典的键必须是不可变类型(如字符串、数字、元组)
-
值可以是任意Python对象
二、字典的基本操作
2.1 增加或修改元素
# 添加新键值对
student["gender"] = "男"# 修改现有键的值
student["age"] = 21
2.2 访问值
# 通过键访问
print(student["name"]) # 输出: 张三# 使用get()方法(避免KeyError)
print(student.get("height", "170cm")) # 如果键不存在,会报错
mydic = {'Name': '小红', 'Age': 7, 'Class': 'First'}
print (mydic['Alice']) # KeyError: 'Alice'
2.3 成员检查(in/not in)
if "name" in student:print("姓名存在")if "height" not in student:print("身高信息不存在")
in用于判断一个键是否存在于字典中,存在返回True, 否则返回False(not in 类似)
-
示例
d = dict(a=1, b=2) # d = {'a': 1, 'b': 2}
print('a' in d) # True
print(1 in d) # False
print('hello' not in d) # True
2.4 删除元素
# del语句删除
del student["major"]# pop()方法删除并返回值
age = student.pop("age")# 清空字典
student.clear()
三、字典的特性
-
无序性:Python3.7+中字典会保持插入顺序,但不应依赖顺序进行编程
-
键唯一性:每个键只能出现一次,后赋值的会覆盖前面的,假如前面的name是小红,后面又出现了name是小明,print(dict[name])是小明。
-
可变性:字典内容可以动态修改
-
高效查找:基于哈希表实现,查找时间复杂度为O(1)
四、常用字典API
方法 | 描述 |
---|---|
keys() | 返回所有键的视图 |
values() | 返回所有值的视图 |
items() | 返回所有键值对的视图 |
update() | 合并另一个字典 |
copy() | 返回字典的浅拷贝 |
setdefault() | 安全地设置默认值 |
操作字典的方法:
序号 | 函数及描述 |
---|---|
1 | dict.clear()删除字典内所有元素 |
2 | dict.copy()返回一个字典的浅复制 |
4 | dict.get(key, default=None)返回指定键的值,如果键不在字典中返回 default 设置的默认值 |
5 | key in dict如果键在字典dict里返回true,否则返回false |
6 | dict.items()以列表返回一个视图对象 |
7 | dict.keys()返回一个视图对象 |
9 | dict.update(dict2)把字典dict2的键/值对更新到dict里 |
10 | dict.values()返回一个视图对象 |
11 | pop(key,default)删除字典 key(键)所对应的值,返回被删除的值。 |
操作字典的函数:
序号 | 函数 | 描述 |
---|---|---|
1 | len(dict) | 计算字典元素个数,即键的总数。 |
2 | str(dict) | 输出字典,可以打印的字符串表示。 |
3 | type(variable) | 返回输入的变量类型,如果变量是字典就返回字典类型。 |
使用示例:
# 遍历字典
for key, value in student.items():print(f"{key}: {value}")# 合并字典
extra_info = {"hobby": "篮球", "height": "175cm"}
student.update(extra_info)
官方文档:https://docs.python.org/zh-cn/3.13/library/stdtypes.html#mapping-types-dict
五、实际应用场景
-
数据存储:存储结构化数据,如配置信息、用户信息
-
快速查找:需要频繁根据键查找值的场景
-
数据统计:统计词频等需要计数的场景
-
函数参数:**kwargs接收可变数量的关键字参数
总结
字典是Python中最灵活、最常用的数据结构之一。掌握字典的使用可以大大提高编程效率。记住字典的核心特点是键值对和快速查找,在实际应用中多思考如何利用这些特性解决问题。
练习建议:
-
尝试用字典实现一个简单的电话簿
-
统计一篇文章中每个单词出现的次数
-
比较字典与列表在不同操作下的性能差异
希望本文能帮助你掌握Python字典的使用!如果有任何问题,欢迎在评论区留言讨论。