【Python编程】六、字典与集合

简介: 【Python编程】六、字典与集合

字典 dict - 键值对

  • key不能重复;
  • { } 内部是键值对,用逗号,隔开
info = {
     “k1”:”value1”,
     “k2”:value2
}  
  • 字典的value可以是任何值任何类型,甚至是嵌套字典;
  • 字典的key,字典是按照哈希表的方式保存的,unhashable类型不能作为key,list/dict类型不能作为key
  • 字典是无序的,每次打印顺序都不一样
  • 字典中索引就是key,可以通过key取value,value = dict[key],同样可以嵌套索引
  • 因为字典是无序的,所以不能通过切片取值
  • 字典支持del删除,del info[key] 通过key删除键值对
  • for循环迭代对字典取值的时候,默认取key
dict.keys() #取key
dict.values() #取value
k,v in dict.items() #取键值对
  • clear() 清空
  • copy() 浅拷贝
  • fromkeys() 生成字典,第一个参数为key(可迭代),第二个参数为value,staticmethod
  • get() 根据key取值,取不到返回None,或返回设定值
  • items() keys() values()
  • pop() 根据key删除一个键值对,并返回value,如果key不存在可以返回设定值dic.pop(key, arg) – key不存在则返回arg
  • popitem() 字典中随机删除一个键值对并返回
  • setdefault() 设置,dic.setdefault(key, value),如果key已经存在,不设置且返回字典中的key所对应的value,如果不存在,则用参数设置一个键值对key:value,并返回value
  • update() 根据key更新value,有则覆盖,无则设置
  • 在方法中,如果看到参数是 **kwargs 表示可以传入字典 **{k:v}

集合 set

由不同元素组成的集合,集合是一组无序排列的可hash的值(只能存放不可变类型),可以作为字典的key

定义:s = {1, 2, 4, 5} - 区别字典,字典元素是键值对

  • 不同元素组成 – 会自动去重
  • 集合是无序的
  • 集合元素必须是不可变类型的元素
  • set() 方法定义集合,通过for循环迭代
  • add() 增加一个元素
  • clear() 清空
  • pop() 随机删除一个元素,并返回被删除的元素
  • remove() 删除指定元素,删除不存在报错
  • discard() 删除指定元素,元素不存在不报错
  • copy()
  • 集合的关系运算

& 交集 s1.intersection(s2)

| 并集 s1.union(s2)|

- 差集 s1.difference(s2)

  • symmetric_difference() 交叉补集,s1 | s2 – (s1 & s2)
    s1. symmetric_difference(s2) → s1 ^ s2
  • difference_update()
    s1.difference_update(s2)相当于s1=s1-s2
  • intersection _update()
  • symmetric_difference_update()
  • isdisjoint() 如果没有交集返回True,否则False
  • issubset() s1是否是s2的子集,是返回True否则False
  • issuperset() s1是否是s2的父集
  • update() 更新多个值,add()只能更新一个值
  • set是可变类型,通过frozenset()可以定义不可变类型集合
  • 如何把一个列表去重? li = [ … ]
    list(set(li))
相关文章
|
9天前
|
安全 Java 数据处理
Python网络编程基础(Socket编程)多线程/多进程服务器编程
【4月更文挑战第11天】在网络编程中,随着客户端数量的增加,服务器的处理能力成为了一个重要的考量因素。为了处理多个客户端的并发请求,我们通常需要采用多线程或多进程的方式。在本章中,我们将探讨多线程/多进程服务器编程的概念,并通过一个多线程服务器的示例来演示其实现。
|
9天前
|
程序员 开发者 Python
Python网络编程基础(Socket编程) 错误处理和异常处理的最佳实践
【4月更文挑战第11天】在网络编程中,错误处理和异常管理不仅是为了程序的健壮性,也是为了提供清晰的用户反馈以及优雅的故障恢复。在前面的章节中,我们讨论了如何使用`try-except`语句来处理网络错误。现在,我们将深入探讨错误处理和异常处理的最佳实践。
|
1天前
|
安全 数据处理 开发者
《Python 简易速速上手小册》第7章:高级 Python 编程(2024 最新版)
《Python 简易速速上手小册》第7章:高级 Python 编程(2024 最新版)
12 1
|
1天前
|
人工智能 数据挖掘 程序员
《Python 简易速速上手小册》第1章:Python 编程入门(2024 最新版)
《Python 简易速速上手小册》第1章:Python 编程入门(2024 最新版)
23 0
|
2天前
|
API Python
Python模块化编程:面试题深度解析
【4月更文挑战第14天】了解Python模块化编程对于构建大型项目至关重要,它涉及代码组织、复用和维护。本文深入探讨了模块、包、导入机制、命名空间和作用域等基础概念,并列举了面试中常见的模块导入混乱、不适当星号导入等问题,强调了避免循环依赖、合理使用`__init__.py`以及理解模块作用域的重要性。掌握这些知识将有助于在面试中自信应对模块化编程的相关挑战。
17 0
|
3天前
|
Python
Python金融应用编程:衍生品定价和套期保值的随机过程
Python金融应用编程:衍生品定价和套期保值的随机过程
|
3天前
|
Python
python面型对象编程进阶(继承、多态、私有化、异常捕获、类属性和类方法)(上)
python面型对象编程进阶(继承、多态、私有化、异常捕获、类属性和类方法)(上)
37 0
|
3天前
|
程序员 索引 Python
06-python数据容器-set(集合)入门基础操作
06-python数据容器-set(集合)入门基础操作
|
4天前
|
机器学习/深度学习 算法 定位技术
python中使用马尔可夫决策过程(MDP)动态编程来解决最短路径强化学习问题
python中使用马尔可夫决策过程(MDP)动态编程来解决最短路径强化学习问题
21 1
|
4天前
|
Python
python学习8-集合
python学习8-集合