当前位置:   article > 正文

python中dict字典和set集合使用方法(有图解详细)_变量:dict=data.get

变量:dict=data.get

目录

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

dict浅拷贝

dict深拷贝

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

第一种[key] = value

第二种setdefault

第三种update

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

key

values

items

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

setdefault

get

五.定义空集合

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

合集

交集

差集

1.添加一个元素

add源码

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

pop源码

remove 源码

discard 源码

 difference_update 源码

clear 源码


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

dict浅拷贝

只拷贝了父目录(根目录)的数据,非容器类型数据本身拷贝的就是数据本身,容器类型(列表,元组,集合,字典)的数据拷贝的是容器的地址引用

dict_data1和dict_data2两者是独立的,但是里面的元素指向同一个,所以一个改变后,另一个也会随之而变

图解:

 

  1. dict_data = {1: [1, 2, 3]}
  2. dict_data2 = dict_data.copy()
  3. print(dict_data2)
  4. print(id(dict_data[1]))
  5. print(id(dict_data2[1]))
  6. print(id(dict_data))
  7. print(id(dict_data2))
  8. dict_data[1][1] = 8
  9. print(dict_data)
  10. print(dict_data2)
  11. 结果
  12. {1: [1, 2, 3]}
  13. 2501838676224
  14. 2501838676224
  15. 2501837218560
  16. 2501837218752
  17. {1: [1, 8, 3]}
  18. {1: [1, 8, 3]}

dict深拷贝

递归拷贝所有目录的数据,完全在另外内存中复制了一份原字典

图解:

 

  1. list_data = [1, [2, 3]]
  2. list_data2 = copy.deepcopy(list_data)
  3. print(list_data2)
  4. print(id(list_data))
  5. print(id(list_data2))
  6. print(id(list_data2[0]))
  7. print(id(list_data2[0]))
  8. print(id(list_data[1]))
  9. print(id(list_data2[1]))
  10. list_data[1][0] = 8
  11. print(list_data)
  12. print(list_data2)
  13. 结果
  14. [1, [8, 3]]
  15. 1999515586368
  16. 1999515586112
  17. 1999508957488
  18. 1999508957488
  19. 1999515593024
  20. 1999515591232
  21. [1, [8, 3]]
  22. [1, [2, 3]]

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

第一种[key] = value

  1. dict_data = {1: 2, 2: 3}
  2. dict_data[3] = 4
  3. print(dict_data)
  4. 结果
  5. {1: 2, 2: 3, 3: 4}

第二种setdefault

  1. dict_data = {1: 1, 2: 2, 3: 4}
  2. dict_data.setdefault(4, 5)
  3. print(dict_data)
  4. 结果
  5. {1: 1, 2: 2, 3: 4, 4: 5}

第三种update

  1. dict_data = {1: 1, 2: 2, 3: 4}
  2. dict_data1 = {5: 6}
  3. dict_data.update(dict_data1)
  4. print(dict_data)
  5. 结果
  6. {1: 1, 2: 2, 3: 4, 5: 6}

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

key

  1. dict_data = {1: 2, 2: 3, 3: 4}
  2. data = dict_data.keys()
  3. print(data)
  4. 结果
  5. dict_keys([1, 2, 3])

values

  1. dict_data = {1: 1, 2: 2, 3: 4}
  2. data = dict_data.values()
  3. print(dict_data, data)
  4. 结果
  5. {1: 1, 2: 2, 3: 4} dict_values([1, 2, 4])

items

  1. dict_data = {1: 1, 2: 2, 3: 3}
  2. data = dict_data.items()
  3. print(data)
  4. 结果
  5. dict_items([(1, 1), (2, 2), (3, 3)])

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

setdefault

#  如果键不在字典中,则插入值为默认值的键。

  1. dict_data = {1: 1, 2: 2, 3: 4}
  2. data = dict_data.setdefault(4)
  3. print(data)
  4. 结果
  5. None

get

# 如果 key 在字典中,则返回 key 的值,否则返回默认值。

  1. dict_data = {1: 1, 2: 2}
  2. data = dict_data.get(3)
  3. print(data)
  4. 结果
  5. None

五.定义空集合

  1. data = set()
  2. print(data, type(data))
  3. 结果
  4. set() <class 'set'>

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

合集

  1. set_data = {1, 3, 5, 6, 7}
  2. set_data1 = {1, 2, 3, 5, 6}
  3. set_data.update(set_data1)
  4. print(set_data)
  5. 结果
  6. {1, 2, 3, 5, 6, 7}

交集

  1. set_data = {1, 3, 5}
  2. set_data1 = {1, 2, 3, 4}
  3. set_data.intersection_update(set_data1)
  4. print(set_data)
  5. 结果
  6. {1, 3}

差集

  1. set_data = {1, 3, 5, 6, 7}
  2. set_data1 = {1, 2, 3, 5, 6}
  3. set_data.symmetric_difference_update(set_data1)
  4. print(set_data)
  5. 结果
  6. {2, 7}

1.添加一个元素

add源码

  1. add(self, *args, **kwargs):
  2. """
  3. Add an element to a set.
  4. This has no effect if the element is already present.
  5. """

将元素添加到集合中

  1. set_data = {1, 3}
  2. set_data.add(2)
  3. print(set_data)
  4. 结果
  5. {1, 2, 3}

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

pop源码

  1. pop(self, *args, **kwargs):
  2. """
  3. Remove and return an arbitrary set element.
  4. Raises KeyError if the set is empty.
  5. """

删除并返回第一个元素

  1. set_data = {1, 3, 4, 5, 6, 7}
  2. data = set_data.pop()
  3. print(data, set_data)
  4. 结果
  5. 1 {2, 3, 4, 5, 6, 7}

remove 源码

  1. remove(self, *args, **kwargs):
  2. """
  3. Remove an element from a set; it must be a member.
  4. If the element is not a member, raise a KeyError.
  5. """

从集合中删除元素

  1. set_data = {1, 3, 4, 5, 7, 8}
  2. set_data.remove(1)
  3. print(set_data)
  4. 结果
  5. {3, 4, 5, 7, 8}

discard 源码

  1. discard(self, *args, **kwargs):
  2. """
  3. Remove an element from a set if it is a member.
  4. If the element is not a member, do nothing.
  5. """

如果元素是成员,则从集合中删除该元素

  1. set_data = {1, 3, 5}
  2. set_data.discard(1)
  3. print(set_data)
  4. 结果
  5. {3, 5}

 difference_update 源码

  1. difference_update(self, *args, **kwargs):
  2. """ Remove all elements of another set from this set. """

从此集中删除另一组的所有元素。

  1. set_data = {1, 3, 5}
  2. set_data1 = {1}
  3. set_data.difference_update(set_data1)
  4. print(set_data)
  5. 结果
  6. {3, 5}

clear 源码

  1. clear(self, *args, **kwargs):
  2. """ Remove all elements from this set. """

从此集中删除所有元素 

  1. set_data = {1, 3}
  2. set_data.clear()
  3. print(set_data)
  4. 结果
  5. set()

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/490029
推荐阅读
相关标签
  

闽ICP备14008679号