详解Python 字典、映射和散列表

  • Post category:Python

Python 中的字典(dictionary)是一种无序的、可变的、可迭代的数据类型,它由键(key)和值(value)组成。字典通常用于存储和管理散列数据。Python 中提供了丰富的字典、映射和散列表的使用方法。

一、创建字典

可以使用{}或者dict()函数来创建一个字典,如果要创建一个空字典,可以这样写:

empty_dict = {}
empty_dict = dict()

也可以用一个包含键值对的列表或者可迭代对象,来初始化一个字典。下面是一个例子:

fruits = [
    ("apple", 5),
    ("orange", 3),
    ("banana", 10)
]
fruit_dict = dict(fruits)
print(fruit_dict) # {'apple': 5, 'orange': 3, 'banana': 10}

二、访问字典

可以通过键来访问字典中的值,如果键不存在,会抛出一个KeyError异常。下面是一个例子:

fruit_dict = {'apple': 5, 'orange': 3, 'banana': 10}
print(fruit_dict['apple']) # 5
print(fruit_dict.get('watermelon', 0)) # 0

上面的例子中,get()方法可以安全地获取一个字典中的值。如果字典中不存在指定的键,则会返回默认值(上面的例子中是0)。

三、添加或修改字典

可以使用[]或者update()方法来添加或修改字典中的一个或多个键值对。下面是一个例子:

fruit_dict = {'apple': 5, 'orange': 3, 'banana': 10}
fruit_dict['apple'] = 6
fruit_dict['watermelon'] = 2
fruit_dict.update({'mango': 8, 'cherry': 12})
print(fruit_dict) # {'apple': 6, 'orange': 3, 'banana': 10, 'watermelon': 2, 'mango': 8, 'cherry': 12}

上面的例子中,使用[]来修改一个键对应的值,使用update()方法来添加一个或多个键值对。

四、删除字典中的元素

可以使用del或者pop()方法来删除字典中指定的键值对。下面是一个例子:

fruit_dict = {'apple': 5, 'orange': 3, 'banana': 10}
del fruit_dict['orange']
print(fruit_dict) # {'apple': 5, 'banana': 10}
fruit_dict.pop('banana')
print(fruit_dict) # {'apple': 5}

上面的例子中,del通过指定键来删除键值对,pop()通过指定键来获取对应的值,并且在字典中删除这个键值对。

五、遍历字典

可以通过keys()values()items()等方法来遍历字典的键、值或者键值对。下面是一个例子:

fruit_dict = {'apple': 5, 'orange': 3, 'banana': 10}
for key in fruit_dict.keys():
    print(key)
for value in fruit_dict.values():
    print(value)
for item in fruit_dict.items():
    print(item)

上面的例子中,keys()方法可以返回所有的键,values()方法可以返回所有的值,items()方法可以返回所有的键值对。这些方法返回的对象都是可迭代的对象。

六、字典的排序

可以使用sorted()items()方法来对字典中的键值对进行排序。下面是一个例子:

fruit_dict = {'apple': 5, 'orange': 3, 'banana': 10}
sorted_items = sorted(fruit_dict.items(), key=lambda x:x[1], reverse=True)
print(sorted_items) # [('banana', 10), ('apple', 5), ('orange', 3)]

上面的例子中,将字典中的键值对,按照值的大小进行降序排序。

七、散列表的使用

散列表是一种由键值对组成的数据结构,它可以提供高效的访问和修改。Python 中的字典就是一种典型的散列表。

在 Python 中,可以通过hash()方法来获取一个对象的散列值。散列表的实现使用了散列函数,它可以将一个键映射为一个整数,然后根据这个整数来访问和修改散列表中的数据。

八、使用 defaultdict 类型的字典

defaultdict 类型的字典是 Python 自带工具类 collections 中的一员。它可以指定一个默认值,即使字典中对应键不存在也不会报错。

下面是一个例子:

from collections import defaultdict

fruit_dict = defaultdict(int)
fruit_dict['apple'] += 1
fruit_dict['banana'] += 2
print(fruit_dict) # defaultdict(<class 'int'>, {'apple': 1, 'banana': 2})

上面的例子中,defaultdict的参数int指定了默认值的类型为整数,即如果访问一个不存在的键,那么返回的默认值为0