Python 之 字典 dict 的深入浅出
- 1、字典 dict 概念介绍及初始化
-
- 1.1 概念介绍
- 1.2 初始化
-
- 1.3 字典 key 说明
- 1.4 字典查找效率
- 2、字典 dict 操作
-
- 2.1 字典 dict 元素访问
- 2.2 字典 dict 元素增加和修改
- 2.3 字典 dict 元素删除
- 2.4 字典 dict 元素遍历
-
- 2.4.1 遍历 key
- 2.4.2 遍历 value
- 2.4.3 遍历 kv 对
- 2.4.4 字典遍历总结
- 2.4.5 字典遍历和移除注意事项
-
- 2.4.6 字典遍历示例
- 3、defaultdict 和 OrderedDict
-
- 3.1 defaultdict
- 3.2 OrderedDict
1、字典 dict 概念介绍及初始化
1.1 概念介绍
- key-value 键值对的数据的集合
- 可变的、无序的、并且 key 不重复
1.2 初始化
1、 d = dict()
2、 d = {
}
3、dict(**kwargs) 使用 name = value 对初始化一个字典
4、dict(iterable, **kwargs) 使用可迭代对象和 name = value 对构造字典
不过可迭代对象的元素必须是一个二元结构
5、dict(mapping, **kwargs) 使用一个字典构造另外一个字典
6、类方法 dict.fromkeys(iterable, value)
d1 = dict.fromkeys(range(5))
d2 = dict.fromkeys(range(5), 5)
d3 = {
'a':10, 'b':20, 'c':None, 'd':[1, 2, 3], 'e':('1', 'a')}
d4 = dict(a=10, b=20, c=30)
d5 = dict(((1, 'a'), (2, 'b')))
for i in [d1, d2, d3, d4, d5]:
print(i, type(i))
{
0: None, 1: None, 2: None, 3: None, 4: None} <class 'dict'>
{
0: 5, 1: 5, 2: 5, 3: 5, 4: 5} <class 'dict'>
{
'a': 10, 'b': 20, 'c': None, 'd': [1, 2, 3], 'e': ('1', 'a')} <class 'dict'>
{
'a': 10, 'b': 20, 'c': 30} <class 'dict'>
{
1: 'a', 2: 'b'} <class 'dict'>
1.2.1 初始化注意事项
- dict 输入的参数必须是一个可迭代对象,且元素必须是一个二元结构
dict1 = dict([(1, 2), ('a', 10), ('c', 100, 200)])
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-1-c69bd69f2aa3> in <module>
----> 1 dict1 = dict([(1, 2), ('a', 10), ('c', 100, 200)])
ValueError: dictionary update sequence element
- 使用 set 作为可迭代参数时,一定要注意,因为 set 是无序的
dict2 = dict(([1, 2], ['a', [100]], ('abc', 100), {
'dfg', 'qwe'}))
print(dict2)
{
1: 2, 'a': [100], 'abc': 100, 'qwe': 'dfg'}
1.3 字典 key 说明
- key 的要求和 set 的元素要求一致
- set 的元素可以就是看做 key, set 可以看做是 dict 的简化版
- hashable 可哈希才可以作为 key, 可以使用 hash() 测试
1.4 字典查找效率
2、字典 dict 操作
2.1 字典 dict 元素访问
1、d[key]
1.1 返回 key 对应的值 value
1.2 key 不存在,抛出 KeyError 异常
2、get(key [,default])
1.1 返回 key 对应的值 value
1.2 key 不存在,返回缺省值,如果没有缺省值,就返回None
3、setdefault(key [,default])
1.1 返回 key 对应的值 value
1.2 key 不存在,添加 kv 对,value 设置为缺省值,并返回缺省值,如果没有缺省值,则为 None
d1 = dict.fromkeys(range(5), 9)
print(1, d1)
print(2, d1.get(1), d1.get(5, 'abc'), d1.get(5))
print(3, d1[0])
print(4, d1[5])
1 {
0: 9, 1: 9, 2: 9, 3: 9, 4: 9}
2 9 abc None
3 9