码迷,mamicode.com
首页 > 编程语言 > 详细

Python_字典方法

时间:2020-03-10 21:56:17      阅读:67      评论:0      收藏:0      [点我收藏+]

标签:blog   value   traceback   info   区别   def   style   例子   浅拷贝   

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

Python_字典方法

标签:blog   value   traceback   info   区别   def   style   例子   浅拷贝   

原文地址:https://www.cnblogs.com/shz-blog/p/12456194.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!