python 字典

在 Python 中,字典(dict)是一种无序的、可变的集合类型,主要用于存储键值对(key-value pairs)。每个键(key)与一个值(value)相关联,字典的键必须是唯一的,并且是不可变的(如字符串、数字、元组等)。字典的值可以是任意类型,并且可以重复。

1. 创建字典

字典可以通过花括号 {} 或 dict() 函数来创建,键值对之间用冒号 : 分隔,键值对之间用逗号分隔。

示例:
# 使用花括号创建字典
person = {
    "name": "Alice",
    "age": 25,
    "city": "New York"
}

print(person)  # 输出: {'name': 'Alice', 'age': 25, 'city': 'New York'}

# 使用 dict() 创建字典
person2 = dict(name="Bob", age=30, city="Los Angeles")
print(person2)  # 输出: {'name': 'Bob', 'age': 30, 'city': 'Los Angeles'}
2. 访问字典元素

字典通过键来访问对应的值。可以使用 [] 访问字典中的元素。

示例:
person = {
    "name": "Alice",
    "age": 25,
    "city": "New York"
}

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

如果键不存在,访问时会抛出 KeyError。为了避免这种错误,可以使用 get() 方法,它会在键不存在时返回 None 或指定的默认值。

示例:
print(person.get("city"))  # 输出: New York
print(person.get("address"))  # 输出: None(键不存在)
print(person.get("address", "Unknown"))  # 输出: Unknown(指定默认值)
3. 修改字典元素

字典是可变的,你可以修改字典中的值。直接通过键来修改对应的值。

示例:
person = {
    "name": "Alice",
    "age": 25,
    "city": "New York"
}

# 修改字典中的值
person["age"] = 26
person["city"] = "San Francisco"
print(person)  # 输出: {'name': 'Alice', 'age': 26, 'city': 'San Francisco'}
4. 添加新元素

如果键不存在,可以通过指定键和值来添加新的键值对。

示例:
person = {
    "name": "Alice",
    "age": 25
}

# 添加新键值对
person["city"] = "New York"
print(person)  # 输出: {'name': 'Alice', 'age': 25, 'city': 'New York'}
5. 删除字典元素

可以使用 del 语句或 pop() 方法删除字典中的元素。pop() 方法会返回删除的元素。

示例:
person = {
    "name": "Alice",
    "age": 25,
    "city": "New York"
}

# 使用 del 删除元素
del person["city"]
print(person)  # 输出: {'name': 'Alice', 'age': 25}

# 使用 pop() 删除并返回值
removed_value = person.pop("age")
print(removed_value)  # 输出: 25
print(person)  # 输出: {'name': 'Alice'}
如果删除的键不存在,del 会抛出 KeyError,而 pop() 方法可以接受一个默认值参数,用于处理键不存在的情况。
6. 字典的常用方法

Python 字典提供了很多有用的方法来操作键值对。

6.1 keys() - 返回所有键的列表
person = {
    "name": "Alice",
    "age": 25,
    "city": "New York"
}

keys = person.keys()
print(keys)  # 输出: dict_keys(['name', 'age', 'city'])
6.2 values() - 返回所有值的列表
values = person.values()
print(values)  # 输出: dict_values(['Alice', 25, 'New York'])
6.3 items() - 返回字典的所有键值对元组列表
items = person.items()
print(items)  # 输出: dict_items([('name', 'Alice'), ('age', 25), ('city', 'New York')])
6.4 update() - 更新字典,将另一个字典或键值对添加到当前字典中
person = {
    "name": "Alice",
    "age": 25
}

# 使用另一个字典更新
person.update({"city": "New York", "age": 26})
print(person)  # 输出: {'name': 'Alice', 'age': 26, 'city': 'New York'}

# 使用键值对更新
person.update(address="123 Main St")
print(person)  # 输出: {'name': 'Alice', 'age': 26, 'city': 'New York', 'address': '123 Main St'}
6.5 clear() - 清空字典
person = {
    "name": "Alice",
    "age": 25,
    "city": "New York"
}

person.clear()
print(person)  # 输出: {}
7. 字典推导式

字典推导式是一种通过表达式来创建字典的简洁方法。它的语法与列表推导式类似,但生成的是字典。

示例:
# 创建一个字典,键为 1-5,值为它们的平方
squares = {x: x ** 2 for x in range(1, 6)}
print(squares)  # 输出: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

# 只保留偶数键的字典
even_squares = {x: x ** 2 for x in range(1, 6) if x % 2 == 0}
print(even_squares)  # 输出: {2: 4, 4: 16}
8. 字典的排序

虽然字典本身是无序的,但可以通过 sorted() 函数对字典的键或值进行排序。返回的将是一个排序后的列表(而非字典),可以通过排序的键或值创建新的字典。

示例:
person = {
    "name": "Alice",
    "age": 25,
    "city": "New York"
}

# 按字典的键排序
sorted_keys = sorted(person.keys())
print(sorted_keys)  # 输出: ['age', 'city', 'name']

# 按字典的值排序
sorted_by_value = sorted(person.items(), key=lambda x: x[1])
print(sorted_by_value)  # 输出: [('age', 25), ('city', 'New York'), ('name', 'Alice')]
9. 字典的内存效率与性能

字典是一种非常高效的数据结构,具有以下特点:

查找操作:通过键查找值的时间复杂度为 O(1),这使得字典在查找和更新数据时非常高效。

插入和删除操作:插入和删除键值对的时间复杂度平均为 O(1)。

10. 字典与列表的区别
  • 字典存储键值对,列表存储单一值。

  • 字典是无序的,而列表是有序的(从 Python 3.7 开始,字典保持插入顺序)。

  • 字典的键必须是不可变类型(如字符串、数字、元组),而列表的元素可以是任意类型。

  • 总结

  • 字典(dict)是一种由键值对组成的数据结构,适用于快速查找和修改数据。

  • 字典中的键必须是唯一且不可变的,值可以是任意类型。

  • 字典提供了丰富的方法来访问、更新、删除和操作数据。

  • 字典推导式使得创建字典变得更加简洁和高效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值