当前位置:首页>Linux>Linux运维基础Python 字典(Dictionary)详解

Linux运维基础Python 字典(Dictionary)详解

  • 2026-08-25 09:00:33
Linux运维基础Python 字典(Dictionary)详解

一、什么是字典

字典是 Python 中一种非常重要的数据结构,用于存储键值对(key-value pairs)。它是一种无序、可变、可索引的集合。

特点

  • 键(Key):必须是唯一的、不可变的(如字符串、数字、元组)

  • 值(Value):可以是任意类型的数据(字符串、数字、列表、字典等)

  • 无序:在 Python 3.7 之前,字典是无序的;3.7+ 版本字典会保持插入顺序

  • 可变:可以随时添加、删除、修改键值对

二、字典的创建

# 方式1:使用大括号
person= {
"name": "张三",
"age": 25,
"city": "北京"
}

# 方式2:使用 dict() 函数
student=dict(name="李四", age=20, major="计算机")

# 方式3:空字典
empty_dict= {}
empty_dict2=dict()

# 方式4:使用键值对列表
items= [("a", 1), ("b", 2), ("c", 3)]
my_dict=dict(items)

三、字典的基本操作

1. 访问值

person= {"name": "张三", "age": 25, "city": "北京"}

# 方式1:使用键索引
print(person["name"])  # 输出: 张三

# 方式2:使用 get() 方法(推荐,更安全)
print(person.get("age"))  # 输出: 25
print(person.get("gender", "未知"))  # 键不存在时返回默认值

2. 添加/修改键值对

person= {"name": "张三", "age": 25}

# 添加新键值对
person["city"] ="北京"
print(person)  # {'name': '张三', 'age': 25, 'city': '北京'}

# 修改已有键的值
person["age"] =26
print(person)  # {'name': '张三', 'age': 26, 'city': '北京'}

# 使用 update() 方法批量更新
person.update({"email": "zhangsan@example.com", "phone": "13800138000"})

3. 删除键值对

person= {"name": "张三", "age": 25, "city": "北京"}

# 方式1:使用 del 关键字
delperson["city"]

# 方式2:使用 pop() 方法(返回被删除的值)
age=person.pop("age")
print(age)  # 输出: 25

# 方式3:使用 popitem() 方法(删除最后一个键值对,Python 3.7+)
last_item=person.popitem()

# 方式4:清空字典
person.clear()

4. 检查键是否存在

person= {"name": "张三", "age": 25}

print("name"inperson)  # True
print("gender"inperson)  # False

四、字典的常用方法

1. 获取所有键、值、键值对

person= {"name": "张三", "age": 25, "city": "北京"}

# 获取所有键
print(person.keys())  # dict_keys(['name', 'age', 'city'])

# 获取所有值
print(person.values())  # dict_values(['张三', 25, '北京'])

# 获取所有键值对
print(person.items())  # dict_items([('name', '张三'), ('age', 25), ('city', '北京')])

2. 复制字典

person= {"name": "张三", "age": 25}

# 浅拷贝
person_copy=person.copy()

# 使用 dict() 函数
person_copy2=dict(person)

3. 字典长度

person= {"name": "张三", "age": 25, "city": "北京"}
print(len(person))  # 输出: 3

五、字典的遍历

person= {"name": "张三", "age": 25, "city": "北京"}

# 遍历键
forkeyinperson:
print(key)

# 遍历值
forvalueinperson.values():
print(value)

# 遍历键值对(最常用)
forkey, valueinperson.items():
print(f"{key}: {value}")

六、嵌套字典

字典可以嵌套使用,形成更复杂的数据结构:

students= {
"001": {
"name": "张三",
"age": 20,
"courses": ["数学", "英语", "计算机"]
    },
"002": {
"name": "李四",
"age": 21,
"courses": ["物理", "化学", "生物"]
    }
}

# 访问嵌套字典
print(students["001"]["name"])  # 张三
print(students["002"]["courses"][0])  # 物理

七、字典推导式

类似于列表推导式,字典也有推导式:

# 基本语法:{key: value for item in iterable}

# 示例1:创建平方数字典
squares= {x: x**2forxinrange(1, 6)}
print(squares)  # {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

# 示例2:带条件的字典推导式
even_squares= {x: x**2forxinrange(1, 11) ifx%2==0}
print(even_squares)  # {2: 4, 4: 16, 6: 36, 8: 64, 10: 100}

八、实际应用场景

1. 配置管理

config= {
"database": {
"host": "localhost",
"port": 3306,
"user": "root",
"password": "123456"
    },
"server": {
"host": "0.0.0.0",
"port": 8000
    }
}

2. 统计计数

text="hello world hello python"
words=text.split()

word_count= {}
forwordinwords:
ifwordinword_count:
word_count[word] +=1
else:
word_count[word] =1

print(word_count)  # {'hello': 2, 'world': 1, 'python': 1}

3. 用户信息存储

user = {
    "id": 1001,
    "username": "zhangsan",
    "email": "zhangsan@example.com",
    "is_active": True,
    "roles": ["admin", "user"]
}

九、注意事项

  1. 键必须唯一:如果同一个键被赋值多次,后面的值会覆盖前面的值

  2. 键必须不可变:不能使用列表作为键,但可以使用元组

  3. 访问不存在的键:使用 [] 索引会报错,使用 get() 方法更安全

  4. 性能优势:字典的查找、插入、删除操作都是 O(1) 时间复杂度,非常高效

最新文章

随机文章