Python必备技巧之字典(Dictionary)详解

  • Post category:Python

Python必备技巧之字典(Dictionary)详解

什么是字典?

字典(Dictionary)是Python中一种非常实用的数据类型。字典是一种可变容器,可以存储任意数量的对象,每个对象都由一个键和一个值组成。与列表、元组等数据类型不同,字典中的元素是没有顺序的,但是可以通过键来访问和修改元素。

字典的创建

使用花括号{}或者dict()函数可以创建一个字典:

# 创建一个空字典
d = {}
d = dict()

# 创建一个包含元素的字典
d = {'name': 'Tom', 'age': 18}
d = dict(name='Tom', age=18)

字典的基本操作

访问字典中的元素

通过键可以访问字典中的元素:

d = {'name': 'Tom', 'age': 18}

# 访问name键的值
print(d['name'])    # 输出结果为Tom

# 访问age键的值
print(d['age'])     # 输出结果为18

修改字典中的元素

通过键可以修改字典中的元素:

d = {'name': 'Tom', 'age': 18}

# 将age的值改为20
d['age'] = 20
print(d)    # 输出结果为{'name': 'Tom', 'age': 20}

删除字典中的元素

使用del语句可以删除字典中的元素:

d = {'name': 'Tom', 'age': 18}

# 删除age键和值
del d['age']
print(d)    # 输出结果为{'name': 'Tom'}

获取字典中所有的键和值

分别使用keys()和values()方法可以获取字典中所有的键和值:

d = {'name': 'Tom', 'age': 18}

# 获取所有的键
keys = d.keys()
print(keys)     # 输出结果为dict_keys(['name', 'age'])

# 获取所有的值
values = d.values()
print(values)   # 输出结果为dict_values(['Tom', 18])

遍历字典中的元素

使用for循环遍历字典中的元素:

d = {'name': 'Tom', 'age': 18}

# 遍历字典中的键
for key in d.keys():
    print(key)

# 遍历字典中的值
for value in d.values():
    print(value)

# 遍历字典中的键值对
for key, value in d.items():
    print(key, value)

判断键是否在字典中存在

使用in和not in关键字可以判断字典中是否存在某个键:

d = {'name': 'Tom', 'age': 18}

# 判断name键是否在字典中
print('name' in d)      # 输出结果为True

# 判断sex键是否在字典中
print('sex' in d)       # 输出结果为False

# 判断height键是否不在字典中
print('height' not in d)    # 输出结果为True

字典的高级应用

从列表或元组中创建字典

可以使用zip函数从两个列表或元组中创建字典:

keys = ['name', 'age', 'sex']
values = ['Tom', 18, 'male']

# 使用zip函数创建字典
d = dict(zip(keys, values))
print(d)    # 输出结果为{'name': 'Tom', 'age': 18, 'sex': 'male'}

字典的循环嵌套

使用循环嵌套可以遍历字典中嵌套的字典:

d = {'name': 'Tom', 'age': 18, 'contact': {'phone': '13812345678', 'email': 'tom@example.com'}}

# 遍历字典中的键值对
for key, value in d.items():
    # 如果值是一个字典,则遍历这个字典
    if isinstance(value, dict):
        print(key)
        for sub_key, sub_value in value.items():
            print('\t', sub_key, sub_value)
    else:
        print(key, value)

输出结果为:

name Tom
age 18
contact
    phone 13812345678
    email tom@example.com

总结

字典是一种非常有用的数据类型,掌握字典的基本操作和高级应用可以大大提高我们的编程效率。目前我们已经能够使用字典来存储和管理数据了,接下来我们需要学习如何使用字典来解决实际的问题。