您的位置:

Python字典:更高效、更便捷的数据存储方案

一、字典的定义与特点

Python中的字典是一种键-值对(key-value)存储的数据结构,其它编程语言中也有类似结构,比如JavaScript的对象,Java的HashMap。字典的特点在于通过一个唯一的键(key)来关联一个值(value),这与列表(list)、元组(tuple)等线性数据结构不同。

字典可以使用花括号({})或者dict()函数来创建,在花括号中用逗号分隔键-值对,每个键值对使用冒号(:)进行分割。

# 创建字典
person = {'name': 'Jack', 'age': 20, 'city': 'New York'}
# 使用dict()创建字典
person = dict(name='Jack', age=20, city='New York')

字典的特点在于其快速查询,由于不需要按照顺序进行查找,可以在O(1)的时间复杂度内找到元素。此外,字典中的键必须是不可变的对象,例如字符串、数字、元组等,而值可以是任意类型的对象。

二、字典的基本操作

添加、修改、删除

可以通过索引的方式对字典进行添加、修改操作,如果键存在则为修改,不存在则为添加。删除操作可以使用del关键字删除指定的键-值对。

person = {'name': 'Jack', 'age': 20, 'city': 'New York'}
# 添加键-值对
person['phone'] = '1234567'
# 修改键-值对
person['age'] = 21
# 删除键-值对
del person['city']

遍历字典

可以使用for循环遍历字典中的所有键-值对,也可以通过keys()、values()、items()方法分别获取字典中的键、值、键-值对。

person = {'name': 'Jack', 'age': 20, 'city': 'New York'}
# 遍历所有键-值对
for key, value in person.items():
    print(key, value)
# 遍历所有键
for key in person.keys():
    print(key)
# 遍历所有值
for value in person.values():
    print(value)

查询字典

可以使用in关键字查询字典中是否包含指定的键,也可以通过get()方法获取指定键的值,如果键不存在则返回None或者自定义的默认值。

person = {'name': 'Jack', 'age': 20, 'city': 'New York'}
# 查询键是否存在
if 'phone' in person:
    print(person['phone'])
# 通过get()获取值
print(person.get('age', 18))

三、字典的高级技巧

字典推导式

与列表推导式类似,字典推导式可以通过一行代码来快速生成字典,格式为{key_expression: value_expression for expression in iterable}。

# 生成字典{name: len(name)}
names = ['Tom', 'Jerry', 'Spike']
name_length = {name: len(name) for name in names}

默认字典

默认字典(defaultdict)是Python内置模块collections提供的一种字典子类,当查询的键不存在时,会返回一个默认值而不是抛出异常。默认字典可以通过设置一个工厂函数来指定默认值的类型。

from collections import defaultdict

# 创建默认字典,指定默认值为int类型
dd = defaultdict(int)
# 增加键a的值,由于a不存在,默认值为0
dd['a'] += 1
print(dd['a'])

# 创建默认字典,指定默认值为list类型
dd = defaultdict(list)
dd['list'].append(1)
print(dd['list'])

OrderedDict

OrderedDict是Python内置模块collections提供的一种字典子类,在普通字典的基础上,为插入顺序维护了一个双向链表,因此可以保证元素的顺序与添加时的顺序相同。

from collections import OrderedDict

# 创建有序字典
od = OrderedDict()
od['a'] = 1
od['b'] = 2
od['c'] = 3
print(od)

Counter

Counter是Python内置模块collections提供的一种字典子类,用于统计元素出现的次数,其返回一个类似字典的容器,其中元素名为键,元素个数为值。

from collections import Counter

# 统计字符串中单词出现次数
words = 'this is a sample sentence'
word_count = Counter(words.split())
print(word_count)

四、总结

字典是Python中极为常用的数据结构之一,其使用灵活、高效、便捷,可以应用于各种场景。掌握字典的基本操作以及一些高级技巧,可以提高编程效率,减少错误。