Python之字典操作
字典类型的容器在编程中的重要性不再言谈,通过现有典型互联网企业及传统企业专门部署redis集群服务器可知字典的编程、业务应用方面的重要性。
字典定义及初始化
字典是非线性结构容器
字典的key-value键值对的数据集合
字典是可变的,无须的,key不重复
字典的key值必须可hash
1 | d1 = dict() |
{0: 0, 1: 0, 2: 0, 3: 0, 4: 0}
字典元素的访问
d[key]
返回key对应的值value
key不存在抛出KeyError异常
1 | d = dict(a=1,b=2) |
1
get(key[, default])
返回key对应的值value
key不存在返回缺省值,如果没有设置缺省值就返回None
1 | d = dict(a=1,b=2) |
{'a': 1, 'b': 2}
setdefault(key[, default])
返回key对应的值value
key不存在,添加kv对, value设置为default,并返回default,如果default没有设置,缺省为None
1 | d = dict(a=1,b=2) |
{'a': 1, 'b': 2, 'c': 10}
字典增加和修改
d[key] = value
将key对应的值修改为value
key不存在添加新的kv对
1 |
update([other]) -> None
使用另一个字典的kv对更新本字典
key不存在,就添加
key存在,覆盖已经存在的key对应的值
就地修改
1 | d = dict(a=0,b=2) |
{'a': 3, 'b': 2}
字典删除
pop(key[,default])
如果key在字典中,删除它并返回他对应的值,
否则返回默认值,
如果默认值没有给定和key不在字典中则抛出错误
1 | d = dict(a=1,b=2) |
0
popitem()
移除和删除任意一个键值对
如果字典为空则抛出一个KeyError 异常
1 | d = dict(a=1,b=2) |
('a', 1)
del语句
从字典中删除一个值,若这个值不在字典中则抛出错误异常
1 | d = dict(a=1,b=2) |
clear()
清空字典
1 | d = dict(a=1,b=2) |
{}
字典KEY遍历
字典的初始化,和取值方式
1 | d = dict(a=1,b=2,c=3) |
dict_keys(['a', 'b', 'c'])
dict_values([1, 2, 3])
a b c
a b c
字典key的遍历有三种方式遍历,
第一种直接遍历字典
1 | d = dict(a = 1,b = 2,c = 3 ) |
a b c
第二种通过类下的方法keys()进行遍历
1 | d = dict(a = 1,b = 2,c = 3) |
a b c
第三种通过将迭代出来的列表转换为迭代器
1 | d = dict(a = 1,b = 2,c = 3) |
<class 'dict_keyiterator'>
'c'
字典value值的遍历
字典value值的遍历可以通过遍历key获取到key值,然后通过d[key],get[key]访问对应的value值或者直接通过class类方法
通过key值,d[key]方法访问value
1 | d = dict(a = 1,b = 2,c = 3) |
1 2 3
通过key值,get方法访问value值
1 | d = dict(a = 1,b = 2,c = 3) |
1 2 3
通过items()方法获取value的值
1 | d = dict(a = 1,b = 2,c = 3) |
1 2 3
字典变量,丢弃变量访问
1 | d = dict(a = 1,b = 2,c = 3) |
1 2 3
字典遍历过程中移除元素
1 | d = dict(a = 1,b = 2,c = 3) |
{'a': 1, 'b': 2, 'c': 3}
字典遍历过程中构建
构建字典思路:
构建字典的思路就是首先创建一个空字典,然后再往空字典中加入key和对应的值,通常情况下key的值也可以为空,根据后续条件在添加key对应的值
1 | import random |
{'a': [0, 1], 'b': [0, 1, 2, 3], 'c': [0, 1, 2], 'd': [0, 1, 2, 3, 4], 'e': [0, 1], 'f': [0, 1, 2], 'g': [0, 1, 2, 3]}
1 | from collections import defaultdict |
defaultdict(<class 'list'>, {'a': [0]})
defaultdict(<class 'list'>, {'a': [0], 'b': [0, 1, 2, 3]})
defaultdict(<class 'list'>, {'a': [0], 'b': [0, 1, 2, 3], 'c': [0, 1, 2]})
defaultdict(<class 'list'>, {'a': [0], 'b': [0, 1, 2, 3], 'c': [0, 1, 2], 'd': [0, 1, 2, 3]})
defaultdict(<class 'list'>, {'a': [0], 'b': [0, 1, 2, 3], 'c': [0, 1, 2], 'd': [0, 1, 2, 3], 'e': [0, 1, 2]})
defaultdict(<class 'list'>, {'a': [0], 'b': [0, 1, 2, 3], 'c': [0, 1, 2], 'd': [0, 1, 2, 3], 'e': [0, 1, 2], 'f': [0, 1, 2, 3, 4]})
有序字典构建
OrderedDict对象
有序字典和常规字典一样,但它们记住插入项目的顺序。
当迭代一个有序的字典时,这些项按照它们的键被第一次添加的顺序返回。
返回dict子类的实例,支持通常的dict方法。
ordereddict是一个记忆键首次插入顺序的dict。
如果新条目覆盖现有条目,则原始插入位置保持不变。删除一个条目并重新插入它将移动到末尾。
1 | from collections import OrderedDict |
{'a': 1, 'b': 2, 'c': 3, 'd': 4}
['b', 'c', 'a', 'd']
dict_keys(['a', 'b', 'c', 'd'])
OrderedDict([('b', 2), ('c', 3), ('a', 1), ('d', 4)])
odict_keys(['b', 'c', 'a', 'd'])