自学内容网 自学内容网

Python 学习中什么是字典,如何操作字典?

什么是字典

字典(Dictionary)是Python中的一种内置数据结构,用于存储键值对(key-value pair)。字典的特点是通过键来快速查找值,键必须是唯一的,而值可以是任何数据类型。字典在其他编程语言中通常被称为哈希表或关联数组。

字典使用花括号 {} 括起来,键值对之间用逗号 , 分隔,每个键和值之间用冒号 : 分隔。例如:

my_dict = {
    'name': 'John',
    'age': 25,
    'city': 'New York'
}

创建字典

创建字典的方法有多种,可以使用花括号 {}dict() 函数。

使用花括号创建字典
# 创建一个空字典
empty_dict = {}

# 创建一个带有初始键值对的字典
person = {
    'name': 'Alice',
    'age': 30,
    'city': 'Seattle'
}
使用 dict() 函数创建字典
# 创建一个空字典
empty_dict = dict()

# 使用关键字参数创建字典
person = dict(name='Bob', age=25, city='San Francisco')

# 从键值对的列表创建字典
person = dict([('name', 'Carol'), ('age', 22), ('city', 'Chicago')])

访问字典元素

可以通过键来访问字典中的值。如果键不存在,会引发 KeyError

person = {
    'name': 'David',
    'age': 28,
    'city': 'Los Angeles'
}

# 通过键访问值
print(person['name'])  # 输出 'David'

# 使用 get() 方法访问值,若键不存在则返回 None 或指定的默认值
print(person.get('age'))  # 输出 28
print(person.get('gender'))  # 输出 None
print(person.get('gender', 'Unknown'))  # 输出 'Unknown'

修改字典元素

可以通过键修改字典中的值,如果键不存在,则会添加新的键值对。

person = {
    'name': 'Eve',
    'age': 35,
    'city': 'Boston'
}

# 修改已有键的值
person['age'] = 36
print(person)  # 输出 {'name': 'Eve', 'age': 36, 'city': 'Boston'}

# 添加新的键值对
person['gender'] = 'Female'
print(person)  # 输出 {'name': 'Eve', 'age': 36, 'city': 'Boston', 'gender': 'Female'}

删除字典元素

可以使用 del 语句或 pop() 方法删除字典中的键值对。

person = {
    'name': 'Frank',
    'age': 40,
    'city': 'Denver'
}

# 使用 del 删除键值对
del person['city']
print(person)  # 输出 {'name': 'Frank', 'age': 40}

# 使用 pop() 方法删除键值对并返回被删除的值
age = person.pop('age')
print(age)  # 输出 40
print(person)  # 输出 {'name': 'Frank'}

字典的常用操作

获取字典的键、值和键值对

可以使用 keys()values()items() 方法分别获取字典的键、值和键值对。

person = {
    'name': 'Grace',
    'age': 29,
    'city': 'Houston'
}

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

# 获取所有值
values = person.values()
print(values)  # 输出 dict_values(['Grace', 29, 'Houston'])

# 获取所有键值对
items = person.items()
print(items)  # 输出 dict_items([('name', 'Grace'), ('age', 29), ('city', 'Houston')])
遍历字典

可以使用 for 循环遍历字典的键、值或键值对。

person = {
    'name': 'Hank',
    'age': 45,
    'city': 'Miami'
}

# 遍历字典的键
for key in person:
    print(key, person[key])

# 遍历字典的键和值
for key, value in person.items():
    print(key, value)
合并字典

可以使用 update() 方法将一个字典的键值对更新到另一个字典中。如果键已存在,则更新其值;如果键不存在,则添加新的键值对。

dict1 = {'name': 'Ivy', 'age': 32}
dict2 = {'city': 'Atlanta', 'age': 33}

# 使用 update() 方法合并字典
dict1.update(dict2)
print(dict1)  # 输出 {'name': 'Ivy', 'age': 33, 'city': 'Atlanta'}

字典的高级操作

字典推导式

字典推导式是一种简洁的创建字典的方法,类似于列表推导式。语法为 {key: value for item in iterable}

# 创建一个平方字典
squares = {x: x**2 for x in range(6)}
print(squares)  # 输出 {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

# 过滤字典中的元素
person = {'name': 'Jack', 'age': 50, 'city': 'Seattle', 'country': 'USA'}
filtered_dict = {k: v for k, v in person.items() if k != 'age'}
print(filtered_dict)  # 输出 {'name': 'Jack', 'city': 'Seattle', 'country': 'USA'}
嵌套字典

字典可以包含其他字典作为其值,这使得字典可以用于表示更复杂的数据结构。

# 嵌套字典示例
students = {
    'John': {'age': 20, 'major': 'Computer Science'},
    'Alice': {'age': 22, 'major': 'Mathematics'},
    'Bob': {'age': 21, 'major': 'Physics'}
}

# 访问嵌套字典中的元素
print(students['Alice']['major'])  # 输出 'Mathematics'

# 添加新的嵌套字典
students['Eve'] = {'age': 23, 'major': 'Biology'}
print(students)

字典的实际应用

统计字符出现次数

字典可以用于统计字符串中每个字符出现的次数。

text = "hello world"

# 统计字符出现次数
char_count = {}
for char in text:
    if char in char_count:
        char_count[char] += 1
    else:
        char_count[char] = 1

print(char_count)  # 输出 {'h': 1, 'e': 1, 'l': 3, 'o': 2, ' ': 1, 'w': 1, 'r': 1, 'd': 1}
存储和查询配置参数

字典可以用于存储和查询应用程序的配置参数。

# 配置参数字典
config = {
    'host': 'localhost',
    'port': 8080,
    'debug': True
}

# 访问配置参数
print(config['host'])  # 输出 'localhost'
print(config['port'])  # 输出 8080

# 修改配置参数
config['debug'] = False
print(config)  # 输出 {'host': 'localhost', 'port': 8080, 'debug': False}
将字典转换为JSON

在处理API请求或响应时,通常需要将字典转换为JSON格式,可以使用 json 模块实现。

import json

# 字典
person = {
    'name': 'Kate',
    'age': 27,
    'city': 'San Diego'
}

# 将字典转换为JSON字符串
person_json = json.dumps(person)
print(person_json)  # 输出 '{"name": "Kate", "age": 27, "city": "San Diego"}'

# 将JSON字符串转换为字典
person_dict = json.loads(person_json)
print(person_dict)  # 输出 {'name': 'Kate', 'age': 27, 'city': 'San Diego'}

字典的注意事项

  1. 键必须是可哈希的:字典的键必须是不可变类型,如字符串、数字、元组等。列表、字典等可变类型不能作为字典的键。
  2. 字典是无序的:在Python 3.7之前,字典是无序的。从Python 3.7开始,字典的插入顺序被保留,但不应依赖于此特性。
  3. 字典的性能:字典的查找、插入和删除操作在平均情况下都是O(1)时间复杂度,但最坏情况下可能会退化为O(n)。

字典是Python中强大且灵活的数据结构,适用于需要快速查找、插入和删除操作的场景。通过对字典的创建、访问、修改、删除等基本操作的理解,以及高级操作如字典推导式和嵌套字典的应用,可以更好地利用字典处理复杂的数据结构和实现高效的算法。


原文地址:https://blog.csdn.net/Itmastergo/article/details/140200684

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!