Python字典(dict)是一种可变的、无序的键值对集合。它是Python内置的一种数据类型,可以存储任意数量的键值对,其中每个键必须是唯一的。字典是Python编程中非常常用的数据结构,本文将介绍Python字典的特性、作用、底层原理和使用方法。
特性
Python字典的特性如下:
1. 可变性:字典是一种可变的数据类型,可以在运行时添加、删除或修改键值对。
2. 无序性:字典中的键值对是无序的,即无法通过索引访问它们。
3. 唯一性:字典中的键必须是唯一的,如果插入重复的键,则后面的值将覆盖前面的值。
4. 可嵌套性:字典可以嵌套在其他字典中,也可以嵌套在其他数据类型中。
作用
Python字典的作用如下:
1. 存储数据:字典可以用于存储任何类型的数据,包括数字、字符串、列表、元组、字典等。
2. 快速访问数据:由于字典使用哈希表实现,因此可以快速访问数据,时间复杂度为O(1)。
3. 处理结构化数据:字典可以用于处理结构化数据,例如JSON格式的数据。
底层原理
Python字典的底层原理是使用哈希表实现的。哈希表是一种数据结构,它使用哈希函数将键映射到一个唯一的索引,然后将值存储在该索引处。当需要访问值时,使用相同的哈希函数将键映射到相同的索引,并在该索引处查找值。由于哈希函数的唯一性,每个键都可以映射到唯一的索引,因此可以快速访问值。
Python专栏:https://blog.csdn.net/zhouruifu2015/category_5742543
技术圈:https://mp.weixin.qq.com/s/0yqGBPbOI6QxHqK17WxU8Q
使用
Python字典的使用方法如下:
1. 创建字典
使用花括号{}或dict()函数可以创建一个空字典,例如:
```
empty_dict = {}
empty_dict = dict()
```
也可以在创建字典时指定键值对,例如:
```
person = {'name': 'SteveRocket', 'age': 26, 'gender': 'M'}
```
2. 访问字典
可以使用键来访问字典中的值,例如:
```
print(person['name']) # 输出: SteveRocket
print(person['address']) # KeyError: 'address'
```
如果键不存在,则会引发KeyError异常,可以使用get()方法来避免这种情况,例如:
```
print(person.get('address', 'unknown')) # 输出: unknown
```
3. 修改字典
可以使用键来修改字典中的值,例如:
```
person['age'] = 28
```
如果键不存在,则会创建一个新的键值对,例如:
```
person['address'] = 'https://mp.weixin.qq.com/s/0yqGBPbOI6QxHqK17WxU8Q'
```
4. 删除字典
可以使用del语句删除字典中的键值对,例如:
```
del person['gender']
```
也可以使用pop()方法删除键值对,并返回删除的值,例如:
```
age = person.pop('age')
```
5. 遍历字典
可以使用for循环遍历字典中的键值对,例如:
# 遍历出字典的key和value
for key, value in person.items():
print(key, value)
也可以使用keys()方法遍历字典中的键,或使用values()方法遍历字典中的值,例如:
# 遍历出字典的key
for key in person.keys():
print(key)
# 遍历出字典的value
for value in person.values():
print(value)
6. 字典的update更新方法
d = {"name": "SteveRocket", "desc": "Python3.11 dict", "url":"https://mp.weixin.qq.com/s/0yqGBPbOI6QxHqK17WxU8Q"}
print("d:", d) # d: {'name': 'Steverocket', 'desc': 'Python3.11 dict', 'url': 'https://mp.weixin.qq.com/s/0yqGBPbOI6QxHqK17WxU8Q'}
# 如果字典不存在update中的键值对,则向字典中插入新的键值对
ages = {"ages": 25}
d.update(ages)
print("d:", d) # d: {'name': 'Steverocket', 'desc': 'Python3.11 dict', 'url': 'https://mp.weixin.qq.com/s/0yqGBPbOI6QxHqK17WxU8Q', 'ages': 100}
# 如果存在update中的键值对,则会修改字典中原有数据
ages2 = {"ages": 28}
d.update(ages2)
print("d:", d) # d: {'name': 'Steverocket', 'desc': 'Python3.11 dict', 'url': 'https://mp.weixin.qq.com/s/0yqGBPbOI6QxHqK17WxU8Q', 'ages': 28}
# 输出所有的键值
print("key:", d.keys()) # key: dict_keys(['name', 'desc', 'url', 'ages'])
print("value:", d.values()) # value: dict_values(['Steverocket', 'Python3.11 dict', 'https://mp.weixin.qq.com/s/0yqGBPbOI6QxHqK17WxU8Q', 28])
d = {"name": "SteveRocket"}
# 判断键值对
if d["name"] == "SteveRocket":
d["name"] = "SteveRocket02" # 如果存在此键 则根据键修改对应的值
d["age"] = 27 # 如果不存在此键 则添加新的键值对
print(d["name"], type(d["name"])) # SteveRocket02 <class 'str'>
print(d) # {'name': 'SteveRocket02', 'age': 27}
d = {"name": "SteveRocket", "age": 24}
# 获取键组成的列表,类型 以及键的个数
print(d.keys(), type(d.keys()), len(d.keys())) # dict_keys(['name', 'age']) <class 'dict_keys'> 2
# 检测字典中是否存在此键
print(d.has_key("name")) # 此方法在py2中可使用,且输出True py3.11中被废弃
总结
Python字典是一种可变的、无序的键值对集合,它可以存储任意数量的键值对,其中每个键必须是唯一的。字典是Python编程中非常常用的数据结构,可以用于存储任何类型的数据,快速访问数据,处理结构化数据等。字典的底层实现是使用哈希表,可以快速访问数据。在使用字典时,可以创建、访问、修改、删除、遍历字典中的键值对。
更多资料 · 微信公众号搜索【CTO Plus】关注后,获取更多,我们一起学习交流。
关于公众号的描述访问如下链接