Python中的字典(Dict)是一种非常重要的数据类型,它可以用来存储键值对,并且可以快速地通过键来获取对应的值。本文将详细讲解Python中字典的基础知识,包括字典的创建、操作、遍历、方法等内容。下面让我们逐步展开。
字典的创建
字典的创建可以使用大括号{}或者dict()函数,如下所示:
# 使用大括号创建字典
person = {'name':'张三', 'age':20, 'gender':'男'}
# 使用dict()函数创建字典
person = dict(name='张三', age=20, gender='男')
键值对之间使用逗号分隔,其中键和值之间使用冒号“:”进行关联。
字典的操作
访问字典中的值可以使用中括号[]操作符,如下所示:
person = {'name':'张三', 'age':20, 'gender':'男'}
print(person['name']) # 输出:张三
print(person['age']) # 输出:20
如果访问的键不存在,会抛出KeyError异常,程序会中断执行。可以使用get()方法来避免这种情况,如下所示:
person = {'name':'张三', 'age':20, 'gender':'男'}
print(person.get('name')) # 输出:张三
print(person.get('address')) # 输出:None
print(person.get('address', '')) # 输出:''
这样,如果键不存在就会返回None,而不会抛出异常。也可以在get()方法中传入第二个参数,如果键不存在就返回该参数。
对于字典中的值,可以使用相应的键来修改或者添加,如下所示:
person = {'name':'张三', 'age':20, 'gender':'男'}
person['age'] = 21 # 修改字典中的值
person['address'] = '北京市' # 添加新的键值对
print(person) # 输出:{'name': '张三', 'age': 21, 'gender': '男', 'address': '北京市'}
同样,如果要删除字典中的键值对,可以使用del关键字,如下所示:
person = {'name':'张三', 'age':20, 'gender':'男'}
del person['age'] # 删除字典中的键age及其对应的值
print(person) # 输出:{'name': '张三', 'gender': '男'}
字典的遍历
可以使用for循环遍历字典的键或者值或者键值对,如下所示:
# 遍历键
person = {'name':'张三', 'age':20, 'gender':'男'}
for key in person:
print(key)
# 遍历值
person = {'name':'张三', 'age':20, 'gender':'男'}
for value in person.values():
print(value)
# 遍历键值对
person = {'name':'张三', 'age':20, 'gender':'男'}
for key, value in person.items():
print(key, value)
字典的方法
Python中的字典还提供了一些实用的方法,可以方便地操作字典。常用的方法如下:
len()
返回字典中键值对的数量:
person = {'name':'张三', 'age':20, 'gender':'男'}
print(len(person)) # 输出:3
keys()
返回字典中所有键的列表:
person = {'name':'张三', 'age':20, 'gender':'男'}
print(person.keys()) # 输出:dict_keys(['name', 'age', 'gender'])
values()
返回字典中所有值的列表:
person = {'name':'张三', 'age':20, 'gender':'男'}
print(person.values()) # 输出:dict_values(['张三', 20, '男'])
items()
返回字典中所有键值对的列表:
person = {'name':'张三', 'age':20, 'gender':'男'}
print(person.items()) # 输出:dict_items([('name', '张三'), ('age', 20), ('gender', '男')])
update()
将一个字典中的键值对更新到另一个字典中:
# 将person2中的键值对更新到person1中
person1 = {'name':'张三', 'age':20}
person2 = {'gender':'男', 'height':175}
person1.update(person2)
print(person1) # 输出:{'name': '张三', 'age': 20, 'gender': '男', 'height': 175}
clear()
清空字典中的所有键值对:
person = {'name':'张三', 'age':20, 'gender':'男'}
person.clear()
print(person) # 输出:{}
示例说明
下面给出两个操作字典的示例,分别是使用字典统计字符串中每个字符出现的次数和将一个嵌套字典进行拍平。
统计字符串中每个字符出现的次数
使用字典可以很容易地统计字符串中每个字符出现的次数,如下所示:
text = 'hello, world!'
count = {}
for c in text:
if c in count:
count[c] += 1
else:
count[c] = 1
print(count)
# 输出:{'h': 1, 'e': 1, 'l': 3, 'o': 2, ',': 1, ' ': 1, 'w': 1, 'r': 1, 'd': 1, '!': 1}
先定义一个空的字典count,然后遍历字符串text中的每个字符,如果字符已经存在于count中,就将对应的值加1,否则将该字符添加到count中,并将对应的值设为1。
将一个嵌套字典进行拍平
有时候我们需要将一个嵌套字典进行“拍平”,即将所有的键值对都放到一个字典中,如下所示:
person = {'name':'张三', 'age':20, 'gender':{'name':'男', 'code':1}}
flatten = {}
def flatten_dict(dic, key=None):
if not isinstance(dic, dict):
flatten[key] = dic
return
for k, v in dic.items():
new_key = k if key is None else key + '.' + k
flatten_dict(v, new_key)
flatten_dict(person)
print(flatten)
# 输出:{'name': '张三', 'age': 20, 'gender.name': '男', 'gender.code': 1}
使用递归方式遍历person中的所有键值对,如果值是一个字典,就递归调用flatten_dict()方法,将当前的键作为新的key参数传入。如果值不是一个字典,就将当前的键值对添加到flatten中,如果当前键已经存在,就会加上新的前缀,如gender.name。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python基础知识之字典(Dict) - Python技术站