5、字典dict的常用方法

书诚小驿2025/03/08Python知识库Python

一、字典的创建

1、创建空字典

# 方式1:使用大括号
dict1 = {}
print(dict1)  # 输出: {}

# 方式2:使用dict()
dict2 = dict()
print(dict2)  # 输出: {}

2、创建带有初始值的字典

# 方式1:直接创建
dict1 = {'name': 'Python', 'age': 30}
print(dict1)  # 输出: {'name': 'Python', 'age': 30}

# 方式2:使用dict()和关键字参数
dict2 = dict(name='Python', age=30)
print(dict2)  # 输出: {'name': 'Python', 'age': 30}

# 方式3:使用列表创建
pairs = [('name', 'Python'), ('age', 30)]
dict3 = dict(pairs)
print(dict3)  # 输出: {'name': 'Python', 'age': 30}

二、字典的基本操作

1、访问和修改元素

# 创建一个示例字典
user = {'name': 'Python', 'age': 30, 'skills': ['coding', 'debug']}

# 1. 访问元素
print(user['name'])  # 输出: Python
print(user.get('age'))  # 输出: 30
print(user.get('height', 175))  # 输出: 175 (不存在时返回默认值)

# 2. 修改元素
user['age'] = 31
user['city'] = 'Beijing'  # 添加新键值对
print(user)  # 输出: {'name': 'Python', 'age': 31, 'skills': ['coding', 'debug'], 'city': 'Beijing'}

2、删除元素

# 1. 使用del语句
del user['city']
print(user)  # 输出: {'name': 'Python', 'age': 31, 'skills': ['coding', 'debug']}

# 2. 使用pop()
age = user.pop('age')
print(age)  # 输出: 31
print(user)  # 输出: {'name': 'Python', 'skills': ['coding', 'debug']}

# 3. 使用popitem()删除最后一个键值对
last_item = user.popitem()
print(last_item)  # 输出: ('skills', ['coding', 'debug'])

三、字典的常用方法

1、查询方法

user = {'name': 'Python', 'age': 30, 'skills': ['coding', 'debug']}

# 1. keys() - 获取所有键
print(list(user.keys()))  # 输出: ['name', 'age', 'skills']

# 2. values() - 获取所有值
print(list(user.values()))  # 输出: ['Python', 30, ['coding', 'debug']]

# 3. items() - 获取所有键值对
print(list(user.items()))  # 输出: [('name', 'Python'), ('age', 30), ('skills', ['coding', 'debug'])]

# 4. 检查键是否存在
print('name' in user)  # 输出: True
print('city' in user)  # 输出: False

2、更新方法

# 1. update() - 更新字典
user.update({'city': 'Beijing', 'age': 31})
print(user)  # 输出: {'name': 'Python', 'age': 31, 'skills': ['coding', 'debug'], 'city': 'Beijing'}

# 2. setdefault() - 设置默认值
email = user.setdefault('email', 'python@example.com')
print(email)  # 输出: python@example.com
print(user)  # 输出: {..., 'email': 'python@example.com'}

四、字典的高级操作

1、字典推导式

# 1. 基本字典推导式
numbers = range(5)
squares = {x: x**2 for x in numbers}
print(squares)  # 输出: {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

# 2. 带条件的字典推导式
even_squares = {x: x**2 for x in numbers if x % 2 == 0}
print(even_squares)  # 输出: {0: 0, 2: 4, 4: 16}

2、嵌套字典

# 嵌套字典的创建和访问
users = {
    'user1': {
        'name': 'Python',
        'age': 30,
        'skills': ['coding', 'debug']
    },
    'user2': {
        'name': 'Java',
        'age': 25,
        'skills': ['web', 'database']
    }
}

# 访问嵌套字典
print(users['user1']['name'])  # 输出: Python
print(users['user2']['skills'])  # 输出: ['web', 'database']

五、注意事项

  1. 字典键的特点
# 1. 键必须是不可变类型
valid_dict = {(1, 2): 'tuple_key', 'str': 'string_key', 1: 'int_key'}
print(valid_dict)  # 输出: {(1, 2): 'tuple_key', 'str': 'string_key', 1: 'int_key'}

# 下面的代码会报错
# invalid_dict = {[1, 2]: 'list_key'}  # TypeError: unhashable type: 'list'
  1. 浅拷贝与深拷贝
import copy

# 浅拷贝
dict1 = {'name': 'Python', 'data': [1, 2, 3]}
dict2 = dict1.copy()
dict2['data'].append(4)
print(dict1['data'])  # 输出: [1, 2, 3, 4] (原字典也被修改)

# 深拷贝
dict3 = copy.deepcopy(dict1)
dict3['data'].append(5)
print(dict1['data'])  # 输出: [1, 2, 3, 4] (原字典不受影响)
  1. 内存使用
import sys

# 比较不同大小字典的内存占用
small_dict = {'a': 1, 'b': 2}
big_dict = dict.fromkeys(range(100), 0)

print(f'小字典占用内存:{sys.getsizeof(small_dict)} 字节')  # 输出: 232 字节
print(f'大字典占用内存:{sys.getsizeof(big_dict)} 字节')  # 输出: 4096 字节