内容目录
In [1]:
from collections.abc import Mapping, MutableMapping
#Python
dict_data = dict()
print(isinstance(dict_data, Mapping))
print(isinstance(dict_data, MutableMapping))
True True
dict的常见用法¶
In [17]:
import copy
student_dict = {
'小明': {'school': '兰州大学'},
'小红': {'school': '北京大学'},
}
# 浅拷贝
new_dict_1 = student_dict.copy()
new_dict_1['小明']['school'] = 'Python学院'
print(new_dict_1)
print(student_dict)
# 深拷贝
print('-' * 30)
new_dict_2 = copy.deepcopy(student_dict)
new_dict_2['小红']['school'] = 'Java学院'
print(new_dict_2)
# fromkeys:根据key批量设置value
print('-' * 30)
student_name_list = ['大熊', '小静']
new_dict_3 = dict.fromkeys(student_name_list, {'address': '北京'})
print(new_dict_3)
# get方法:
print('-' * 30)
print(student_dict.get('小明'))
print(student_dict.get('小强', '当前学生不存在...'))
# items方法:
print('-' * 30)
for key, value in student_dict.items():
print(key, value)
# setdefault方法:查询不存在的可以,并且设置value
print('-' * 30)
default = student_dict.setdefault('双双', {'school': '天津大学'})
print(default)
print(student_dict)
# update方法:支持接收迭代对象
print('-' * 30)
student_dict.update({'夏洛':{'school': '北京航天航空大学'}})
print(student_dict)
{'小明': {'school': 'Python学院'}, '小红': {'school': '北京大学'}} {'小明': {'school': 'Python学院'}, '小红': {'school': '北京大学'}} ------------------------------ {'小明': {'school': 'Python学院'}, '小红': {'school': 'Java学院'}} ------------------------------ {'大熊': {'address': '北京'}, '小静': {'address': '北京'}} ------------------------------ {'school': 'Python学院'} 当前学生不存在... ------------------------------ 小明 {'school': 'Python学院'} 小红 {'school': '北京大学'} ------------------------------ {'school': '天津大学'} {'小明': {'school': 'Python学院'}, '小红': {'school': '北京大学'}, '双双': {'school': '天津大学'}} ------------------------------ {'小明': {'school': 'Python学院'}, '小红': {'school': '北京大学'}, '双双': {'school': '天津大学'}, '夏洛': {'school': '北京航天航空大学'}}
dict的子类¶
In [20]:
#### 不建议直接继承字典和列表
class MyDict(dict):
def __setitem__(self, key, value):
super().__setitem__(key, value * 2)
my_dict = MyDict(one=1)
print(my_dict)
my_dict['one'] = 1
print(my_dict)
{'one': 1} {'one': 2}
In [24]:
from collections import UserDict
class MyUserDict(UserDict):
def __setitem__(self, key, value):
super().__setitem__(key, value * 2)
my_dict = MyUserDict(one=2)
print(my_dict)
{'one': 4}
set和frozenset¶
In [32]:
# 集合创建
set_data_1 = set('abcde')
print(set_data_1)
set_data_2 = set(['a', 'b', 'c', 'd', 'e'])
print(set_data_2)
# 添加元素
set_data_1.add('f')
print(set_data_1)
# 不可变集合
set_data_3 = frozenset('abcde')
print(set_data_3)
# update方法
set_data_4 = set('123')
set_data_1.update(set_data_4)
print(set_data_1)
# difference方法
set_data_5 = set('123')
result = set_data_1.difference(set_data_5)
print(result)
# 集合交并集运算符号
# |:并集
# &:交集
# -:差集
# issubset方法:判断当前结合是否是另外一个集合的一部分
print(set_data_5.issubset(set_data_1))
{'b', 'e', 'a', 'c', 'd'} {'b', 'e', 'a', 'c', 'd'} {'b', 'e', 'a', 'c', 'f', 'd'} frozenset({'b', 'e', 'a', 'c', 'd'}) {'b', 'e', 'a', 'c', '3', 'f', '2', 'd', '1'} {'b', 'e', 'a', 'c', 'f', 'd'} True
In [ ]: