一、字典

在python中定义一个字典的语法为:

1 dic = {1:"张三",2:"李四"}

字典的每一个元素由key:value组成,这类似于一个学号对应一个学生,我们可以通过学号(key)来查看对应的学生姓名(value)。字典有以下2个特点:1、无序,2:key是唯一的

那下面我们一起看以下字典的基本操作(增删改查)。

增加一个元素:

1 dic = {1:"张三",2:"李四"}
2 dic["3"] = "王五"  #增加王五,执行结果为:{1: '张三', 2: '李四', '3': '王五'}
3 print(dic)

字典的增加元素比较奇葩,需要注意一下,我们知道字典的key是唯一的,那么如果我们增加下面一条语句,结果会是怎么样呢?

1 dic[1] = "王五"

python解释器在执行到这个条语句的时候,发现字典中已经存在key为1的元素时,就会执行一个更新操作,将key为1的value改成"王五"。

删除一个元素:

1 dic = {1:"张三",2:"李四"}
2 #del dic[1]  #删除key为1的元素 python通用方法执行结果{2: '李四'}
3 #dic.pop(2) #专属删除方法,执行结果{1: '张三'}
4 dic.popitem() #随机删除一个元素
5 print(dic)

如果要删除的key不在字典,解释器会抛出异常,因此我们在删除一个元素的时候,应该养成先判断再删除的习惯,正确的删除姿势如下:

1 if "1" in dic:
2     dic.pop("1")

修改元素:

1 dic = {1:"张三",2:"李四"}
2 dic[1] = "王五" #将key为1的元素的value值修改为"王五"
3 print(dic)

或许有人会想,如果我修改的key在字段中不存在会出现什么情况?我只能呵呵一下,这不就是添加元素的语法吗?例如:dic[3]="赵六"。

查找元素:

1 dic = {1:"张三",2:"李四"}
2 print(dic.get(1))  #通过key值查找对应的value 执行结果 张三
3 print(dic.get(3)) #key值不存在于字典中,执行结果为none
4 print(dic[1]) #通过key查询对应的value,执行结果张三
5 print(dic[3]) #key值不存在,执行报错

综上所述:查找元素主要通过dic[key]和dic.get(key)两种方法,区别在于,当元素的key不存在时,dic[key]会抛异常而dic.get(key)不会。

其它操作:

1 dic = {1:"张三",2:"李四"}
2 print(dic.keys(),dic.values()) #打印字典的key和value
3 dic.setdefault(3,"赵六") #添加一个元素,其和dic[key]=value不同的是,该方法如果key值已存在于字典中,不做更新
4 dic_1 = {3:"赵哥",4:"老七"}
5 dic.update(dic_1) #用一个字典去更新另一个字典 执行结果{1: '张三', 2: '李四', 3: '赵哥', 4: '老七'}
6 print(dic.items()) #将字典转换为列表,每一个元素时一个元组
7 print(dic)

多级字典嵌套:

 1 av_catalog = {
 2     "欧美":{
 3         "www.youporn.com": ["很多免费的,世界最大的","质量一般"],
 4         "www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"],
 5         "letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"],
 6         "x-art.com":["质量很高,真的很高","全部收费,屌比请绕过"]
 7     },
 8     "日韩":{
 9         "tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","听说是收费的"]
10     },
11     "大陆":{
12         "1024":["全部免费,真好,好人一生平安","服务器在国外,慢"]
13     }
14 }
15
16 av_catalog["大陆"]["1024"][1] += ",可以用爬虫爬下来"
17 print(av_catalog["大陆"]["1024"])

二、集合

先来看一下集合的定义:

1 set_1 = set([1,3,5,7,8,9])

集合的特点类似于字典,1、无序,2,去重。这里集合的定义个人感觉和我们高中学习的集合的概念一模一样。

集合的基本操作:

 1 set_1 = set(["1","3","5","7","9","10"])
 2 set_2 = set(["2","4","5","6","9","8","8"])
 3 # print(set_1,set_2)
 4 print(set_2.union(set_1),set_2|set_1)#求并集 执行结果 {'5', '8', '6', '9', '7', '2', '10', '1', '3', '4'}
 5 print(set_1.intersection(set_2),set_1&set_2) #求交集 执行结果 {'9', '5'}
 6 print(set_1.difference(set_2),set_1-set_2) #求差集 执行结果{'7', '1', '10', '3'}
 7 print(set_1.symmetric_difference(set_2),set_1^set_2) #对称差集 执行结果{'6', '7', '1', '3', '4', '8', '2', '10'}
 8 print(set_1.issubset(set_2),set_1.issuperset(set_2)) #子集和父集 执行结果 False False
 9 print(set_1.isdisjoint(set_2)) #是否没有交集 执行结果 False
10 set_1.add("123")    #添加一个元素
11 set_1.update([3,2,1]) #批量添加
12 set_1.remove("123") #删除一个元素 元素不存在时报错
13 set_1.discard("123")#删除一个元素 元素不存在时 不报错
14 set_1.pop() #删除集合中任意一个元素

集合的操作也符合我们对集合的一贯的理解。

转载于:https://www.cnblogs.com/win0211/p/8288119.html

4、Python基本数据类型之字典,集合相关推荐

  1. Python基础数据类型之set集合

    Python基础数据类型之set集合 一.set数据类型介绍 二.set集合演示 三.set集合中hash介绍 1.哈希定义 2.数据类型的hash和不可hash 3.set中hash示例 四.set ...

  2. python判断数据类型是不是字典的方法

    这篇文章主要介绍python判断数据类型是不是字典的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! python的数据类型有:数字(int).浮点(float).字符串(s ...

  3. python中列表 元组 字典 集合的区别

    参考文章:python中列表 元组 字典 集合的区别

  4. Python经典数据类型:字典

    选择题 以下关于Python字典的描述中,错误的是: A.在定义字典时,键和值用冒号连接 B.字典通过整数索引来查找其中的元素 C.字典的键值对之间没有顺序且不能重复 D.字典用中括号中包含键名的格式 ...

  5. Python组合数据类型:字典dictionary

    一.组合数据类型container objects 组合数据类型container objects:能够表示多个数据的类型 集合类型:集合类型是元素集合,元素无序不重不变 序列类型:序列类型是元素向量 ...

  6. python列表元祖字典集合运算_Python基础5:列表 元祖 字典 集合 Json

    [ 列表] 列表(list)是Python以及其他语言中最常用到的数据结构之一.Python使用使用中括号 [ ] 来解析列表. 列表是可变的(mutable)--即:可以改变列表的内容. 相关操作: ...

  7. python入门——列表+元组+字典+集合

    列表 列表是最常用的python数据类型,它可以作为一个方括号内的逗号分隔值出现. 列表的数据项不需要具有相同的类型 1.列表嵌套(相当于二维数组) a=["b",'c','d'] ...

  8. Python组合数据类型之字典类型

    单元概述 主要解决问题:让程序更好地处理一组数据 三类重要组合数据类型:集合类型.序列类型和字典类型 学完本章,我们能够在头脑中建立集合.序列和字典的模式来表达对一组数据的表达和处理 1. 定义 首先 ...

  9. python基本数据类型之字典详解

    文章目录 字典(dict) 一.定义和表示 二.字典的基本操作 2.1 查看(取值) 1.key在字典中取值案例: 2.key不在字典中取值会报错,如果想要不报错,可用==get方法设置默认值== 2 ...

最新文章

  1. android edittext html 图片,Android EditText加载HTML内容(内容包含网络图片) -电脑资料...
  2. 10.原码 反码 补码
  3. 正式版Android P,喜大普奔!一加6正式推送Android P正式版
  4. 基于mindspore的口罩检测训练与在线推理
  5. 解决Qt5 Creator无法切换输入法(fcitx),Ubuntu中不能使用搜狗输入法录入汉字问题...
  6. 如何开启jvm日志_做了10个小实验:搞懂了JVM三大参数类型
  7. OpenCV-Python bindings是如何生成的(2)
  8. sqlserver还原到mysql_SQLSERVER完整数据库还原(简单恢复模式)
  9. oracle物理索引结构,oracle学习笔记(6)oracle物理结构--索引
  10. ArcEngine这本书怎么样
  11. Java判段两个日期的先后
  12. java arraylist 字符串数组_java中String,数组,ArrayList三者之间的转换
  13. 银行排队叫号系统项目总结
  14. 【DSP】频谱泄露与栅栏效应简介
  15. php 模拟登陆微信,PHP实现微信模拟登陆的实例介绍
  16. 如何在自带.net4.8的Windows 10系统上装其他版本的.net
  17. 【网络基础】通俗易懂的搞明白什么是IP地址(小白向)
  18. MYSQL选修课的心得体会_选修课心得体会
  19. UE4渲染设置介绍(Rendering Setting)
  20. html5:初学h标签的使用 p标签 br标签 hr标签

热门文章

  1. 夜来风雨声,“TCP/IP”知多少?
  2. (一)1.线性规划 之 化标准型和图解法
  3. [蓝桥杯国赛]客观题
  4. linux smb 连上 断开,linux – 如何在客户端断开连接后阻止samba持有文件锁?
  5. linux内核时钟工作原理,需要学习并了解Linux时钟的原理及其应用
  6. Pytorch:一些常用代码
  7. Java网络编程:TCP,UDP,sock编程
  8. mac的rubywoo怎么读_迪奥999和mac ruby woo哪个更好看_有什么区别
  9. 解密pdf-3(输入我们本国的文字--中文)
  10. Transformer在3D点云中的应用综述(检测/跟踪/分割/降噪/补全)