Python字典

字典也是Python提供的一种常用的数据结构,它以一种"键-值对"的形式存储数据,具有极高的查找效率。

  • :必须是不可变的类型(如字符串、数字、元组),且必须是唯一的。

  • :可以是任何 Python 对象,并且可以重复。

字典在 Python 中用花括号 {} 表示,键值对之间用逗号分隔,键和值之间用冒号 : 分隔。

字典的定义

赋值定义:

dict1 = {key:value,key:value,key:value,......}

空字典的定义:

dict2 = {}

dict3 = {}

复制代码
# 创建一个空字典
empty_dict = {}

# 创建带有初始键值对的字典
person = {
    "name": "Alice",
    "age": 30,
    "city": "New York"
}
print(person) # {'name': 'Alice', 'age': 30, 'city': 'New York'}

#使用 dict() 构造函数
# 使用关键字参数
person = dict(name="Bob", age=25, city="London")
print(person) # {'name': 'Bob', 'age': 25, 'city': 'London'}

# 使用可迭代对象(列表/元组,其中每个元素是一个包含两个元素的元组)
person = dict([("name", "Charlie"), ("age", 35), ("city", "Paris")])
print(person) # {'name': 'Charlie', 'age': 35, 'city': 'Paris'}

注:key不能重复,否则新的key:value会覆盖老的key:value

字典的嵌套

复杂业务逻辑下,可以通过字典的嵌套。

字典的key和value可以是任意数据类型,但量key不能是字典类型

复制代码
# 创建一个嵌套字典
company = {
    "employee1": {
        "name": "Alice",
        "age": 30,
        "department": "Engineering"
    },
    "employee2": {
        "name": "Bob", 
        "age": 25,
        "department": "Marketing"
    }
}

print(company)
# {
#   'employee1': {'name': 'Alice', 'age': 30, 'department': 'Engineering'},
#   'employee2': {'name': 'Bob', 'age': 25, 'department': 'Marketing'}
# }

字典的常用方法

1、通过key值来获取对应的value,语法:字典"key",也可以是单引号,如果访问的key在字典里不存在,则报错。增加方法get("key"),根据key获取对应的value值。假如不存在,不报错,返回None。

复制代码
person = {"name": "Alice", "age": 30}

# 使用 [] 访问
print(person["name"]) # 输出:Alice

# 使用 get() 方法访问 (更安全,键不存在时返回 None 或指定默认值)
print(person.get("age")) # 输出:30
print(person.get("country")) # 输出:None
print(person.get("country", "Not Specified")) # 输出:Not Specified (指定默认值)

# 使用 [] 访问不存在的键会报 KeyError 错误
# print(person["country"]) # 这会引发 KeyError

2、新增或者修改元素,语法:字典"key"=value,如果key不存在,就是新增,如果key存在,就是修改。

update("{key:value}"),功能一样,但是可以一次操作多个键值对:

update("{key1:value1,key2:value2}")

复制代码
person = {"name": "Alice"}

# 添加新键值对
person["age"] = 30
print(person) # {'name': 'Alice', 'age': 30}

# 修改已存在的键的值
person["age"] = 31
print(person) # {'name': 'Alice', 'age': 31}

3、删除

复制代码
person = {"name": "Alice", "age": 30, "city": "New York"}

# 使用 del 语句删除指定键
del person["city"]
print(person) # {'name': 'Alice', 'age': 30}

# 使用 pop() 方法删除并返回该键的值
age = person.pop("age")
print(age) # 30
print(person) # {'name': 'Alice'}

# 使用 popitem() 方法删除并返回最后一个键值对(在 Python 3.7+ 中,指最后插入的)
last_item = person.popitem()
print(last_item) # ('name', 'Alice')
print(person) # {}

# 使用 clear() 方法清空字典
person = {"name": "Alice"}
person.clear()
print(person) # {}

4、遍历字典

复制代码
my_dict= {"语文": 68, "数字": 98, "英语": 76}

# 遍历所有的键
for key in my_dict:
    print(key)
# 或者
for key in my_dict.keys():
    print(key)

# 遍历所有的值
for value in my_dict.values():
    print(value)

# 遍历所有的键值对 (以元组形式)
for item in my_dict.items():
    print(item) # 例如:('语文': 68)

# 同时获取键和值 (解包)
for key, value in my_dict.items():
    print(f"{key}: {value}")

字典的特点和注意事项

  1. 无序性 :在 Python 3.6 之前,字典是无序的。从 Python 3.7 开始,字典会保持元素的插入顺序。这是一个重要的实现细节,现在可以依赖这个特性。

  2. 键必须可哈希:字典的键必须是不可变类型(如字符串、数字、元组(但元组内不能有可变元素))。列表、字典等可变类型不能作为键。

  3. 查找速度快:字典使用哈希表实现,无论字典有多大,查找、插入、删除操作的平均时间复杂度都是 O(1)。

  4. 动态:字典可以根据需要动态地增长和缩小。

相关推荐
ai小陈1 小时前
PyTorch DataLoader数据加载性能排查:GPU利用率低的实操指南
人工智能·pytorch·python·深度学习·ai·gpu算力
2601_962299244 小时前
Azure python操作系统列表
python·操作系统·azure·虚拟机·存储配置文件
学术 学术 Fun5 小时前
如何用 API 与 Webhook 批量把图表图片转换成 VSDX
python·自动化·api·visio
2601_962100546 小时前
python包和模块的内容整理
python·模块·导入·虚拟环境·
二进制漫游记6 小时前
FastAPI项目集成 Qdrant向量数据库+阿里云Embedding完整实战(工具封装+业务调用)
数据库·python·阿里云·embedding
-今昭-7 小时前
《V2V 迁移实战:将 VMware 虚拟机转为 OpenStack 可用 Glance qcow2 镜像》
开发语言·python
2601_962381587 小时前
【转】Python渗透测试工具:sqlmap
python·渗透测试·sql注入·sqlmap·数据库安全
用户3721574261358 小时前
如何使用 Python 从 Word 文档中提取图片
python
白山编程大哥9 小时前
Java 集合算法:从排序、查找到底层原理的实战指南
java·python·算法
昭昭日月明10 小时前
RAGFlow 入门,不用从零造轮子
python·ai编程