5.4 字典定义和使用
5.4.1 字典定义
列表和元组对每一个元素使用了一个索引(下标)进行标识,有时希望用更具有实际意义的内容对元素进行标识,单纯的0,1,2就表达不了更多的含义,这时可以使用字典。字典中给每一个元素定义了一个key作为索引,通过key就能访问到对应的值value。在Python中,字典使用大括号,写法如下:
info = {'name': 'zhangsan', 'age': 23, 'sex': 'F', 'addr': 'nanjing', 'work': True}
每一个字典元素包括两部分,分别是冒号前面的key和冒号后面的value,元素用逗号分隔开。
key可以是任意不可变类型的数据,不过通常是字符串类型。value可以是任意类型的数据。
在字典中查找某个元素时,是通过key进行查找的。
例如:5.9-字典访问.py
# 字典访问
# 定义字典,键值对,键:引号引起的字符串,值:可以是各种数据类型
info = {'name': 'zhangsan', 'age': 23, 'sex': 'F', 'addr': 'nanjing', 'work': True}
# 访问,通过键名访问
print(info['name'])
print(info['age'])
# 访问不存在的键,报错
# print(info['aaa'])
# 用get获取是否存在某个键
aaa = info.get('aaa')
print(type(aaa))
# 修改值,通过键访问修改
info['age'] = 25
print(info['age'])
# 添加元素:直接给出键值对,键名不在字典之中
info['aaa'] = 'aaa'
print(info['aaa'])
print(info)
# 删除:del,删除的是键值对,是整个元素
del(info['addr'])
print(info)
# del 字典名,将删除整个字典
# del(info)
# clear 清空了字典的内容,字典还在
info.clear()
print(info)
结果为:
zhangsan
23
<class 'NoneType'>
25
aaa
{'name': 'zhangsan', 'age': 25, 'sex': 'F', 'addr': 'nanjing', 'work': True, 'aaa': 'aaa'}
{'name': 'zhangsan', 'age': 25, 'sex': 'F', 'work': True, 'aaa': 'aaa'}
{}
5.4.2 字典的遍历
对于字典,最常使用的是通过keys(),values()和items()函数进行遍历里面的key,value和键值对。
例如:5.10-字典操作.py
# 字典操作
info = {'name': 'zhangsan', 'age': 23, 'sex': 'F', 'addr': 'nanjing', 'work': True}
print(info)
# len :元素个数
print(len(info))
# keys:返回字典里面的键的列表
print(info.keys())
# values:返回字典里面的值的列表
print(info.values())
# items:返回字典里面的键值对的元组的列表
print(info.items())
# 字典遍历
# 遍历字典里面的键
for key in info.keys():
print(key)
# 遍历字典里面的值
for value in info.values():
print(value)
# 遍历字典里面的元素
for item in info.items():
print(item)
# 遍历字典里面的键,值
for key, value in info.items():
print(key, end=':')
print(value)
结果为:
{'name': 'zhangsan', 'age': 23, 'sex': 'F', 'addr': 'nanjing', 'work': True}
5
dict_keys(['name', 'age', 'sex', 'addr', 'work'])
dict_values(['zhangsan', 23, 'F', 'nanjing', True])
dict_items([('name', 'zhangsan'), ('age', 23), ('sex', 'F'), ('addr', 'nanjing'), ('work', True)])
name
age
sex
addr
work
zhangsan
23
F
nanjing
True
('name', 'zhangsan')
('age', 23)
('sex', 'F')
('addr', 'nanjing')
('work', True)
name:zhangsan
age:23
sex:F
addr:nanjing
work:True