栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python编程语言中dict和set运用的详解(含dict set浅拷贝的区别)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python编程语言中dict和set运用的详解(含dict set浅拷贝的区别)

1.dict和list中copy方法画图加代码解释

dict的浅拷贝

a和b两者是独立的,但里面的列表还是同一个,因此a列表改变后b列表也会随之改变

 dict的深层拷贝

深层拷贝两者独立,创建新的列表,所以a字典当中列表改变吧当中也不会改变

dict_data = {1: [1, 2, 3]}
newdict_data = copy.deepcopy(dict_data)
print(id(dict_data[1]))
print(id(newdict_data[1]))
print(id(dict_data))
print(id(newdict_data))
dict_data[1][1] = 8
print(dict_data)
print(newdict_data)
结果
1599513995264
1599513988608
1599512539712
1599512590208
{1: [1, 8, 3]}
{1: [1, 2, 3]}

list的浅层拷贝

浅拷贝, a

list_data1和 list_data2 是一个独立的对象,但他们的子对象还是指向统一对象(是引用),列表外层改变时另一个也改变。

 

list_data1 = [1, [1, 2, 3]]
list_data2 = list_data1.copy()
print(id(list_data1[1]))
print(id(list_data2[1]))
print(id(list_data1))
print(id(list_data2))
list_data1[1][1] = 8
print(list_data1)
print(list_data2)
结果
2568433930048
2568433930048
2568433849024
2568433928960
[1, [1, 8, 3]]
[1, [1, 8, 3]]

深拷贝:: 深度拷贝, a 和 b 完全拷贝了父对象及其子对象,两者是完全独立的。列表外层改变时另一个不改变

list_data1 = [1, [1, 2, 3]]
list_data2 = copy.deepcopy(list_data1)
print(id(list_data1[1]))
print(id(list_data2[1]))
print(id(list_data1))
print(id(list_data2))
list_data1[1][1] = 8
print(list_data1)
print(list_data2)
结果
2093104539584
2093104537792
2093104532928
2093104532672
[1, [1, 8, 3]]
[1, [1, 2, 3]]

2.dict中扩展字典长度(多种方法)

(1)setdefault(self, key, default=None, /)

(2)setdefault(self, key, default=None, /)

(3)D.update([E, ]**F) -> None. Update D from dict/iterable E and F

更新字典内容也是一种增加字典内元素的方法


3.dict中获取所有的key,获取所有的value,获取所有的item


4.dict中通过一个不存在的key去获取值(要求不报错)

 (1)通过.setdefault的方式去获取

 (2)通过get的方式去获取


5.定义空集合

(1)直接定义一个空集合

(2)先定义一个集合再将集合内所有的元素删去


6.set中,求差集,求合集,求交集(要求在原集合上操作)

(1)差集

 差集:symmetric_difference_update(...)
       Update a set with the symmetric difference of itself and another.

 (2)合集

合集 :  update(...)
       Update a set with the union of itself and others.


 (3)交集

 交集:intersection_update(...) | Update a set with the intersection of itself and another.

 

 7、添加一个元素

add(...)

Add an element to a set.

   删除一个元素(使用多种方法)

(1)删除集合中所有的元素

 (2)删除指定元素

 (3)discard()方法

说明:discard方法删除元素时,元素不存在,不会引发任何错误

 (4)pop方法

说明:从set中随机删除并返回一个元素,set为空会引发KeyError

 

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/958271.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号