1. 定义
字典是另一种可变对象,类似于我们生活中使用的字典,它可以存储任意类型对象,
与列表不同的是,字典的每个元素都是由一个键和一个值组成的“键值对”,键和值通过冒号分开。
- {} 中包含 “键:值” 对,任意对象的无序集合,不是序列(不支持分片、排序等)
- 通过键存取、可变长度、异构、支持嵌套,常用于实现稀疏的数据结构
2. 索引
- 通过键进行索引一个字典,是Python中编写搜索的最快方法
scores = {'jzy': 93, '周杰伦': 79, '狄仁杰': 82}
# 通过键可以获取字典中对应的值
print(scores['jzy'])
print(scores['狄仁杰'])
输出结果:
93
79
3. 内置运算
- len(获取长度,“键:值”对个数)、
- dict(将一组键值对映射转换为字典)、
- in测试(查看键是否存在)
scores = {'jzy': 93, '周杰伦': 79, '狄仁杰': 82}
print(len(scores))
print(dict(jzy=93,wl=92,ly=90))
print('周杰伦' in scores)
输出结果:
3
{'ly': 90, 'wl': 92, 'jzy': 93}
True
4. 字典的函数方法
scores = {'jzy': 93, '周杰伦': 79, '狄仁杰': 82}
# pop(移除指定键的键值对,返回键的值)
a=scores.pop('jzy')
print(a)
# 93
# update(合并)
# 相同键的键值被覆盖
nameAge=dict(jzy=93,wl=92,ly=90)
scores.update(nameAge)
print(scores)
# {'周杰伦': 79, 'ly': 90, '狄仁杰': 82, 'wl': 92, 'jzy': 93}
# copy(复制当前字典)
copy=nameAge.copy()
print(copy)
# {'ly': 90, 'wl': 92, 'jzy': 93}
# fromkeys(以指定键集合生成新字典)
# 默认值为None,且不改变当前字典
# 返回新的字典
b=nameAge.fromkeys(scores,10)
print(nameAge)
# {'wl': 92, 'ly': 90, 'jzy': 93}
print(scores)
# {'周杰伦': 79, '狄仁杰': 82, 'jzy': 93, 'ly': 90, 'wl': 92}
print(b)
# {'周杰伦': 10, '狄仁杰': 10, 'wl': 10, 'ly': 10, 'jzy': 10}
# clear(清空)
scores.clear()
print(scores)
# {}
5. 键、值获取
- keys(获取键列表)、
- values(获取值列表)、
- items(获取键值对列表)、
- get(获取指定键的值)
scores = {'jzy': 93, '周杰伦': 79, '狄仁杰': 82}
# keys(获取键列表)
# 需转换成list,才能获取值
a=scores.keys()
print(list(a)[1])
# 狄仁杰
# values(获取值列表)
# 需转换成list,才能获取值
b=scores.values()
print(list(b))
# [79, 82, 93]
# items(获取键值对列表)
# 返回可遍历的(键, 值) 元组数组
c=scores.items()
print(list(c))
# [('周杰伦', 79), ('狄仁杰', 82), ('jzy', 93)]
# get(获取指定键的值)
d=scores.get('jzy')
print(d)
# 93
总结
- python 的数据类型中字典与web中JSON格式很类似,两者之间可以通过函数转化。由于web应用的发展,字典这一类型应用十分广泛,应该重点掌握。
- 字典是可变对象,可以赋值的方式改变值,但字典中的键都是唯一的。
- 在网络爬虫分析中及Django开发web界面,会大量使用到字典。