Python_字典方法

1. 方法

2. 例子

 (1)增加/修改

  • D[key] = value
 1 >>> D = {1: 'a', 2: 'b', 3: 'c'}
 2 >>> D[4] = 'd'
 3 >>> D[1] = 'A'
 4 >>> D
 5 {1: 'A', 2: 'b', 3: 'c', 4: 'd'}
 6 >>> D[5]
 7 Traceback (most recent call last):
 8   File "<pyshell#4>", line 1, in <module>
 9     D[5]
10 KeyError: 5

使用D[key],当key不存在时,会报错,可使用get或setdefault或defaultdict来避免KeyError异常(get在后面“查找”的例子里)。

  • setdefault和defaultdict
1 >>> D = {}
2 >>> D.setdefault(1, str)
3 <class 'str'>
4 >>> D
5 {1: <class 'str'>}
6 >>> D[1] = 'a'
7 >>> D
8 {1: 'a'}

defaultdict中的default_factory可以是str、list、set、int等,key不存在时对应返回的分别是' '、[ ]、set()、0。

1 >>> from collections import defaultdict
2 >>> D = defaultdict(list)
3 >>> D[1]
4 []
5 >>> D
6 defaultdict(<class 'list'>, {1: []})
7 >>> D[1].append('a')
8 >>> D
9 defaultdict(<class 'list'>, {1: ['a']})
  •  setdefault和defaultdict用来计数的例子:

  参考地址:https://baijiahao.baidu.com/s?id=1635571891580252489&wfr=spider&for=pc

 1 >>> L = list('abbccc')
 2 >>> L
 3 ['a', 'b', 'b', 'c', 'c', 'c']
 4 
 5 >>> d1 = {}
 6 >>> for item in L:
 7     d1[item] = d1.setdefault(item, 0) + 1
 8 
 9 >>> d1
10 {'a': 1, 'b': 2, 'c': 3}
11 
12 >>> from collections import defaultdict
13 >>> d2 = defaultdict(int)
14 >>> for item in L:
15     d2[item] += 1
16 
17 >>> d2
18 defaultdict(<class 'int'>, {'a': 1, 'b': 2, 'c': 3})
  • update
 1 >>> D = {'a': 1, 'b': 2, 'c': 3}
 2 >>> D.update({'a': 11, 'd': 4})
 3 >>> D
 4 {'a': 11, 'b': 2, 'c': 3, 'd': 4}
 5 >>> D.update([('b', 22), ('e', 5)])
 6 >>> D
 7 {'a': 11, 'b': 22, 'c': 3, 'd': 4, 'e': 5}
 8 >>> D.update(zip(['c', 'f'], [33, 6]))
 9 >>> D
10 {'a': 11, 'b': 22, 'c': 33, 'd': 4, 'e': 5, 'f': 6}
11 >>> D.update(d=44, g=7)
12 >>> D
13 {'a': 11, 'b': 22, 'c': 33, 'd': 44, 'e': 5, 'f': 6, 'g': 7}

(2)删除

 1 >>> D = {1: 'a', 2: 'b', 3: 'c'}
 2 >>> del D[1]
 3 >>> D
 4 {2: 'b', 3: 'c'}
 5 >>> D.pop(1, 'None')
 6 'None'
 7 >>> D.popitem()
 8 (3, 'c')
 9 >>> D
10 {2: 'b'}
11 >>> D.clear()
12 >>> D
13 {}
14 >>> del D
15 >>> D
16 Traceback (most recent call last):
17   File "<pyshell#9>", line 1, in <module>
18     D
19 NameError: name 'D' is not defined

(3)查找

 1 >>> D = {1: 'a', 2: 'b', 3: 'c'}
 2 >>> D.get(1, -1)
 3 'a'
 4 >>> D.get(4, -1)
 5 -1
 6 >>> D.items()
 7 dict_items([(1, 'a'), (2, 'b'), (3, 'c')])
 8 >>> D.keys()
 9 dict_keys([1, 2, 3])
10 >>> D.values()
11 dict_values(['a', 'b', 'c'])

(4)浅拷贝

1 >>> d1 = {1: ['a', 'b'], 2: 'c'}
2 >>> d2 = d1.copy()
3 >>> id(d1) == id(d2)
4 False
5 >>> id(d1[1]) == id(d2[1])
6 True

 注:浅拷贝和深拷贝的区别,详情见https://www.cnblogs.com/shz-blog/p/12451730.html

posted @ 2020-03-10 21:08  亦示  阅读(333)  评论(0编辑  收藏  举报