🌈 个人主页:十二月的猫-CSDN博客
🔥 系列专栏: 🏀《Python/PyTorch极简课》_十二月的猫的博客-CSDN博客💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光
目录
1. 前言
- 👑《零基础入门PyTorch/Python》专栏持续更新中,未来最少文章数量为60篇。由于专栏刚刚建立,促销价为9.9。后续将慢慢恢复原价至99.9🍉【在校大学生】评论区留言并私信我免费订阅
- 👑《零基础入门PyTorch/Python》专栏主要针对零基础入门的小伙伴。不需要Python基础,不需要深度学习基础,只要你愿意学,这一个专栏将真正让你做到零基础入门。
- 🔥每例项目都包括理论讲解、数据集、源代码。
正在更新中💹💹
🚨项目运行环境:
- 平台:Window11
- 语言环境:Python3.8
- 运行环境1:PyCharm 2021.3
- 运行环境2:Jupyter Notebook 7.3.2
- 框架:PyTorch 2.5.1(CUDA11.8)
2. 字典
(Dictionary)是一种内置的数据结构,以键值对(key-value pair)的形式存储数据。在许多Python或PyTorch中常常被使用,例如nn.Sequential等等。因此猫猫有必要写一篇文章,详细讲讲字典的生命全周期。
2.1 字典的创建
字典创建的方法本质上就两种:大括号法、dict方法
2.1.1 大括号+直接赋值
这是最常见和直接的方式,直接使用 {}
包裹键值对:
my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}
2.1.2 大括号+字典推导式
字典推导式允许你根据某种条件或从其他可迭代对象创建字典:
my_dict = {x: x**2 for x in range(5)}
# 输出: {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
2.1.3 dict+关键字参数
你可以使用 dict()
函数来创建字典,通过关键字参数来初始化:
my_dict = dict(name='Alice', age=25, city='New York')
2.1.4 dict+元组列表
你可以使用 dict()
函数来创建字典,通过元组列表来初始化:
my_dict = dict([('name', 'Alice'), ('age', 25), ('city', 'New York')])
2.1.5 dict+zip方法
zip()
可以将两个可迭代对象组合成一个字典,前一个对象作为键,后一个对象作为值:
示例一:
keys = ['name', 'age', 'city']
values = ['Alice', 25, 'New York']
my_dict = dict(zip(keys, values))
# 输出: {'name': 'Alice', 'age': 25, 'city': 'New York'}
示例二:
dic = dict(zip('abc', [1, 2, 3]))
print(dic)
# 输出结果:{'a': 1, 'b': 2, 'c': 3}
2.1.6 dict+fromkeys方法
通常用来初始化字典, 设置value的默认值
my_dict = dict.fromkeys(['name', 'age', 'city'], None)
# 输出: {'name': None, 'age': None, 'city': None}
2.2 字典的访问
字典访问使用的是中括号([ ])
2.2.1 使用键访问字典元素
通过字典的键来访问对应的值。如果键不存在,会抛出 KeyError
错误:
my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}
# 访问 'name' 键对应的值
print(my_dict['name']) # 输出: Alice
利用[]中括号来访问键值对的值
2.2.2 使用 get()
方法访问字典元素
get()
方法可以通过键来访问字典的值。如果键不存在,它会返回 None
,也可以指定一个默认值:
# 使用 get() 方法
print(my_dict.get('name')) # 输出: Alice
# 使用 get() 方法访问不存在的键
print(my_dict.get('gender')) # 输出: None
# 使用 get() 方法访问不存在的键并设置默认值
print(my_dict.get('gender', 'Not specified')) # 输出: Not specified
2.2.3 元组列表则用元组访问的方法访问
字典的输出有时候就是元组形式,因此访问字典可能也就是访问元组:
tuple_list = [(1, 'a'), (2, 'b'), (3, 'c')]
print(tuple_list[0]) # 输出: (1, 'a')
print(tuple_list[1]) # 输出: (2, 'b')
print(tuple_list[0][0]) # 输出: 1 (访问第一个元组中的第一个元素)
print(tuple_list[1][1]) # 输出: 'b' (访问第二个元组中的第二个元素)
2.3 字典的修改
2.3.1 直接修改字典元素
你可以通过直接指定键来修改字典中的值。如果键不存在,会新增该键值对:
my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}
# 修改 'age' 键对应的值
my_dict['age'] = 26
print(my_dict) # 输出: {'name': 'Alice', 'age': 26, 'city': 'New York'}
# 如果键不存在,添加新的键值对
my_dict['gender'] = 'Female'
print(my_dict) # 输出: {'name': 'Alice', 'age': 26, 'city': 'New York', 'gender': 'Female'}
2.3.2 使用 update()
方法修改字典
update()
方法可以用于修改字典中的元素。你可以传入一个字典或键值对(可以是一个可迭代对象,例如关键字参数或元组列表):
# 修改现有的键值对
my_dict.update({'age': 27, 'city': 'Los Angeles'})
print(my_dict) # 输出: {'name': 'Alice', 'age': 27, 'city': 'Los Angeles', 'gender': 'Female'}
# 通过传入键值对的元组列表来修改或添加元素
my_dict.update([('age', 28), ('gender', 'Male')])
print(my_dict) # 输出: {'name': 'Alice', 'age': 28, 'city': 'Los Angeles', 'gender': 'Male'}
2.3.3 删除字典元素
使用 del
或 pop()
可以删除字典中的键值对:
# 使用 del 删除键值对
del my_dict['city']
print(my_dict) # 输出: {'name': 'Alice', 'age': 28, 'gender': 'Male', 'country': 'USA'}
# 使用 pop() 删除并返回值
removed_value = my_dict.pop('age')
print(removed_value) # 输出: 28
print(my_dict) # 输出: {'name': 'Alice', 'gender': 'Male', 'country': 'USA'}
2.3.4 清空字典
clear()
方法可以清空字典中的所有键值对:
# 使用 clear() 清空字典
my_dict.clear()
print(my_dict) # 输出: {}
2.4 字典方法
2.4.1 keys()
返回字典中所有的键:
my_dict = {'a': 1, 'b': 2}
print(my_dict.keys()) # 输出: dict_keys(['a', 'b'])
2.4.2 values()
返回字典中所有的值:
my_dict = {'a': 1, 'b': 2}
print(my_dict.values()) # 输出: dict_values([1, 2])
2.4.3 update()
更新字典,可以传入另一个字典、键值对或可迭代的键值对序列。如果键已经存在,会更新值;如果键不存在,会添加新键值对:
my_dict = {'a': 1, 'b': 2}
my_dict.update({'b': 3, 'c': 4})
print(my_dict) # 输出: {'a': 1, 'b': 3, 'c': 4}
2.4.4 fromkeys()
创建一个新字典,以指定的键创建字典,并为每个键设置默认值。可以传递一个可迭代对象作为键和一个可选的默认值:
keys = ['a', 'b', 'c']
new_dict = dict.fromkeys(keys, 0)
print(new_dict) # 输出: {'a': 0, 'b': 0, 'c': 0}
2.4.5 setdefault()
如果键不存在于字典中,则将其添加,并将值设置为提供的默认值。如果键已经存在,则不对该键做任何修改:
my_dict = {'a': 1, 'b': 2}
print(my_dict.setdefault('c', 3)) # 输出: 3
print(my_dict.setdefault('a', 3)) # 输出: 1
2.4.6 clear()
清空字典中的所有元素:
my_dict = {'a': 1, 'b': 2}
my_dict.clear()
print(my_dict) # 输出: {}
2.4.6 copy()
返回字典的浅拷贝。拷贝后的字典不会影响原字典:
my_dict = {'a': 1, 'b': 2}
new_dict = my_dict.copy()
print(new_dict) # 输出: {'a': 1, 'b': 2}
2.4.7 items()
返回字典中所有键值对,以元组列表的形式返回。可以用于遍历字典:
my_dict = {'a': 1, 'b': 2}
print(my_dict.items()) # 输出: dict_items([('a', 1), ('b', 2)])
2.4.8 get()
返回指定键的值,如果键不存在,返回 None
(或指定的默认值):
my_dict = {'a': 1, 'b': 2}
print(my_dict.get('a')) # 输出: 1
print(my_dict.get('c', 'Not Found')) # 输出: 'Not Found'
3. 完整示例
下面是一个完整的 Python 示例,展示了字典的创建、修改、访问以及使用一些常见的字典方法:
# 创建字典
student = {
"name": "Alice", # 键值对: "name" -> "Alice"
"age": 20, # 键值对: "age" -> 20
"courses": ["Math", "Science"], # 键值对: "courses" -> ["Math", "Science"]
}
# 访问字典的值
print("Name:", student["name"]) # 输出: Alice
print("Age:", student.get("age")) # 输出: 20
# 使用 get 方法访问一个不存在的键,提供默认值
print("Gender:", student.get("gender", "Not Specified")) # 输出: Not Specified
# 修改字典中的值
student["age"] = 21 # 修改 age 的值
print("Updated Age:", student["age"]) # 输出: 21
# 向字典中添加新的键值对
student["address"] = "123 Main St"
print("Address:", student["address"]) # 输出: 123 Main St
# 使用 update() 方法修改多个键值对
student.update({"name": "Bob", "age": 22})
print("Updated Name:", student["name"]) # 输出: Bob
print("Updated Age:", student["age"]) # 输出: 22
# 使用 keys(), values(), items() 方法
print("Keys:", student.keys()) # 输出: dict_keys(['name', 'age', 'courses', 'address'])
print("Values:", student.values()) # 输出: dict_values(['Bob', 22, ['Math', 'Science'], '123 Main St'])
print("Items:", student.items()) # 输出: dict_items([('name', 'Bob'), ('age', 22), ('courses', ['Math', 'Science']), ('address', '123 Main St')])
# 删除字典中的键值对
student.pop("address") # 删除 "address" 键值对
print("After pop:", student) # 输出: {'name': 'Bob', 'age': 22, 'courses': ['Math', 'Science']}
# 使用 popitem() 删除并返回字典中的最后一个键值对
last_item = student.popitem()
print("Popped item:", last_item) # 输出: ('courses', ['Math', 'Science'])
# 清空字典
student.clear()
print("After clear:", student) # 输出: {}
# 使用 fromkeys 创建一个新字典
new_dict = dict.fromkeys(["a", "b", "c"], 0)
print("New Dictionary:", new_dict) # 输出: {'a': 0, 'b': 0, 'c': 0}
- 字典创建:我们使用大括号
{}
来创建字典,并指定键值对。字典的键是唯一的,值可以是任何数据类型。 - 访问字典的值:我们通过
dict[key]
或dict.get(key)
来访问字典中的值。get()
方法可以提供默认值以避免键不存在时报错。 - 修改字典的值:通过
dict[key] = value
可以修改字典中的值。 - 添加新的键值对:使用相同的方式通过键来添加新的键值对。
- 使用
update()
方法:可以批量更新字典中的多个键值对。 - 遍历字典:通过
keys()
获取所有的键,values()
获取所有的值,items()
获取所有的键值对。 - 删除字典元素:使用
pop()
删除指定的键值对,popitem()
删除并返回最后一个键值对。 - 清空字典:
clear()
方法会删除字典中的所有元素。 - 创建新字典:
fromkeys()
方法通过指定的键创建新字典,并可以为每个键指定一个默认值。
4. 总结
【如果想学习更多深度学习文章,可以订阅一下热门专栏】
如果想要学习更多pyTorch/python编程的知识,大家可以点个关注并订阅,持续学习、天天进步你的点赞就是我更新的动力,如果觉得对你有帮助,辛苦友友点个赞,收个藏呀~~~