一、字典的定义与特点
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中极为常用的数据结构之一,其使用灵活、高效、便捷,可以应用于各种场景。掌握字典的基本操作以及一些高级技巧,可以提高编程效率,减少错误。