第六章深入python的set和dict

1.collections中的abc

  • MutableMapping是Mapping的子类
  • Mapping是Collection的子类
  • Collection是Sized,Iterable,Container的子类
  • dict被注册到MutableMapping中拥有了MutableMapping的方法,dict是鸭子类型,相当于MutableMapping的子类。

1 from collections.abc import MutableMapping
2 
3 # dict属于MutableMapping类型
4 
5 a = {}
6 print(isinstance(a, MutableMapping))  # True

2.dict的常见用法

 1 a = {"1":{"a":"aa"},
 2      "2":{"b":"bb"}}
 3 
 4 # 清空字典
 5 a.clear()
 6 
 7 # 浅拷贝字典 浅拷贝虽然可以正常赋值,但是如果 my_dopy_dict 中的值进行了改变,则 a 中的值也会进行对应的改变
 8 my_dopy_dict = a.copy()
 9 
10 # 深拷贝 深拷贝则是实实在在的在内存当中声明了一个新的变量
11 import copy
12 new_dict = copy.deepcopy(a)
13 
14 # get函数 dict.get(要查找的key,如果没找到对应key的内容返回的数据)
15 print(a.get("3",{1:"3"})) # {1: '3'}
16 
17 # dict.fromkeys() 函数用于创建一个新字典,以序列 seq 中元素做字典的键 seq可以是可迭代的,value 为字典所有键对应的初始值。
18 my_list = [1, 2, 3]
19 my_new_dict = dict.fromkeys(my_list, {"222":"3434"}) #{1: {'222': '3434'}, 2: {'222': '3434'}, 3: {'222': '3434'}}
20 
21 # setdefault() 函数和 get()方法 类似,
22 # 如果键不存在于字典中,将会添加键并将值设为默认值。
23 # 如果存在,则将会返回该key对应的value
24 a.setdefault("3", "cc") # a= {'1': {'a': 'aa'}, '2': {'b': 'bb'}, '3': 'cc'}
25 print(a.setdefault("2", "cc")) # 返回{'b': 'bb'}
26 
27 # update() 函数是合并两个字典:把字典dict2的键/值对更新到dict里。
28 # 如果字典b中有与a相同的key,则会把a中的key对应的value进行更新
29 # 如果字典b中有a中没有的key,则a会将未有的key与value添加进去
30 b = {"3": "cc", "2": "dd"}
31 a.update(b)
32 print(a) # {'1': {'a': 'aa'}, '2': 'dd', '3': 'cc'}

3.dict的子类

4.set和frozenset

5.dict和set实现原理

猜你喜欢

转载自www.cnblogs.com/zhihaospace/p/12076902.html
今日推荐