python基础05——字典:dict及集合:set,看这篇文章就够了

news2024/11/28 12:40:11

目录

  • 1字典: dict 无序可变序列
    • 1.1 创建
      • 1.1.1 用{ }创建字典
      • 1.1.2 用dict创建字典
      • 1.1.3 用zip创建字典
      • 1.1.4 用fromkeys创建字典
    • 1.2 查询
      • 1.2.1 通过键访问字典的值
        • 1.2.1.1 直接取键 dict[ ]
        • 1.2.1.2 get()
      • 1.2.2 查看字典的键和值
        • 1.2.2.1 返回所有的键 dict.keys()
        • 1.2.2.2 返回所有的值 dict.values()
      • 1.2.3 返回所有键值对 dict.items()
      • 1.2.4 判断键是否存在 in
    • 1.3 增加
      • 1.3.1 dict1[' ']
      • 1.3.2 dict.setdefault()
    • 1.4 修改
      • 1.4.1 通过键修改字典的值
      • 1.4.2 通过一个字典修改另一个字典中的值
    • 1.5 删除
      • 1.5.1 del dict['']
      • 1.5.2 pop和popitem
      • 1.5.3 clear 清空字典
      • 1.5.4 del 删除字典
    • 1.6 应用 统计字符串出现次数
  • 2 集合: set 无序可变序列
    • 2.1 创建
      • 2.1.1 用{} 创建
      • 2.1.1 用set( )创建
    • 2.2 查询 in
    • 2.3 修改 set1.update(set2)
    • 2.4 增加 add
    • 2.5 删除
      • 2.5.1 pop随机删除
      • 2.5.2 按照元素值删除
      • 2.5.3 清空 clear
    • 2.6 专属操作 求并集,交集,差集,子集判断,等于和不等于
    • 2.7 应用 其他数据类型进行去重

1字典: dict 无序可变序列

字典是一个可变,无序的容器 ,字典内的元素都是键值对,每一个值(value)都对应一个键(key),标志性符号是花括号{}和冒号

1.1 创建

1.1.1 用{ }创建字典

dict1={'韩梅梅': 80,'李雷': 86 ,'张三': 77 }
dict1
#out:{'韩梅梅': 80, '李雷': 86, '张三': 77}
#传入不同类型的值
dict1={'韩梅梅': 80,'李雷': 86 ,'张三': [77,45,56] }
dict1
#out:{'韩梅梅': 80, '李雷': 86, '张三': [77, 45, 56]}
#创建空字典
dict1 = {}
dict1
out: {}

1.1.2 用dict创建字典

dict2 = dict(韩梅梅= 80, 李雷= 86, 张三= 77)
dict2
#out: {'韩梅梅': 80, '李雷': 86, '张三': 77}
#可以使用元组或者列表,将一对包起来
dict2 = dict([('韩梅梅',80), ('李雷',86),('张三',79)])
dict2
#out: {'韩梅梅': 80, '李雷': 86, '张三': 79}
#创建空字典
dict2 = dict()
dict2 
out: {}

1.1.3 用zip创建字典

name = ['韩梅梅', '李雷', '张三']
score = [80, 86, 79]
dict3 = dict(zip(name,score))
dict3 
#out: {'韩梅梅': 80, '李雷': 86, '张三': 79}

1.1.4 用fromkeys创建字典

#创建值相同的字典
dict4 = dict.fromkeys(['韩梅梅', '李雷', '张三'], 99)
dict4
#out: {'韩梅梅': 99, '李雷': 99, '张三': 99}
#创建值为空的字典
dict4 = dict.fromkeys(['韩梅梅', '李雷', '张三'])
dict4
#out: {'韩梅梅': None, '李雷': None, '张三': None}

注意:

  • 必须是不可变的数据类型才可以做字典的键,如果是包含列表的元组也不能做键。
#元组是不可变类型元组可以做key,但是列表不可以
dict1={('王明','韩梅梅'): 80,'李雷': 86 ,'张三': 79 }
dict1

在这里插入图片描述在这里插入图片描述

  • 字典的键不可以出现重复值(键必须是唯一的),值可以重复,可以使复合类型。
    如果键的名字有重复,不会报错,保留后面的一个键值对
    在这里插入图片描述

1.2 查询

1.2.1 通过键访问字典的值

1.2.1.1 直接取键 dict[ ]

dict2 = dict([['韩梅梅',80], ['李雷',86],['张三',79]])
dict2['韩梅梅']
#out: 80

1.2.1.2 get()

dict2 = dict([['韩梅梅',80], ['李雷',86],['张三',79]])
dict2.get('韩梅梅')
#out: 80
dict2 = dict([['韩梅梅',80], ['李雷',86],['张三',79]])
#若字典中不存在该键,不会报错,输出为空;
#get中可以传入两个参数,若字典中存在该键,则输出该键所对应的值,否则输出设定的输出内容。
dict2.get('韩梅梅','不存在')
#out: 80

在这里插入图片描述

dict2 = dict([['韩梅梅',80], ['李雷',86],['张三',79]])
dict2.get('王梅','不存在')
#out: 不存在

在这里插入图片描述

1.2.2 查看字典的键和值

1.2.2.1 返回所有的键 dict.keys()

dict2 = dict([['韩梅梅',80], ['李雷',86],['张三',79]])
dict2.keys()
#out: dict_keys(['韩梅梅', '李雷', '张三'])

在这里插入图片描述

1.2.2.2 返回所有的值 dict.values()

dict2 = dict([['韩梅梅',80], ['李雷',86],['张三',79]])
dict2.values()
#out: dict_values([80, 86, 79])

在这里插入图片描述

1.2.3 返回所有键值对 dict.items()

#dict.items()辅助实现字典和其他数据类型之间的转换
dict2 = dict([['韩梅梅',80], ['李雷',86],['张三',79]])
dict2.items()
#out: dict_items([('韩梅梅', 80), ('李雷', 86), ('张三', 79)])

在这里插入图片描述

1.2.4 判断键是否存在 in

dict1={'韩梅梅': 80, '李雷': 86, '张三': 77, '王五': 90, '王梅': 88}
'韩梅梅' in dict1  #查找字典里有没有某个值
#out: True 

1.3 增加

1.3.1 dict1[’ ']

dict1={'韩梅梅': 80, '李雷': 86, '张三': 77, '王五': 90}
#键不存在,增加一个元素
dict1['王梅'] = 88
dict1
#out: {'韩梅梅': 80, '李雷': 86, '张三': 77, '王五': 90, '王梅': 88}

在这里插入图片描述

1.3.2 dict.setdefault()

dict1={'韩梅梅': 80, '李雷': 96, '张三': 77, '王五': 90}
dict1.setdefault('李红',100)
dict1
#out: {'韩梅梅': 80, '李雷': 96, '张三': 77, '王五': 90, '李红': 100}

在这里插入图片描述

1.4 修改

1.4.1 通过键修改字典的值

dict1={'韩梅梅': 80, '李雷': 86, '张三': 77, '王五': 90}
#键存在,修改对应的值
dict1['韩梅梅'] = 88
dict1
#out: {'韩梅梅': 88, '李雷': 86, '张三': 77, '王五': 90}

1.4.2 通过一个字典修改另一个字典中的值

dict1={'韩梅梅': 80, '李雷': 86, '张三': 77}
dict2={'李雷': 96, '张三': 77, '王五': 90}
dict1.update(dict2)
dict1
#out: {'韩梅梅': 80, '李雷': 96, '张三': 77, '王五': 90}

在这里插入图片描述

1.5 删除

1.5.1 del dict[‘’]

#del  删除字典某键的键值对 
dict1={'韩梅梅': 80, '李雷': 86, '张三': 77, '王五': 90, '王梅': 88}
del dict1['韩梅梅']
dict1
#out: {'李雷': 86, '张三': 77, '王五': 90, '王梅': 88}

1.5.2 pop和popitem

pop和popitem 会抛出的元素,也就是取出所对应的值,然后在原字典删除该键值对

dict1={'韩梅梅': 80, '李雷': 86, '张三': 77, '王五': 90, '王梅': 88}
dict1.pop('韩梅梅')
#out: 80
dict1
#out: {'李雷': 86, '张三': 77, '王五': 90, '王梅': 88}

在这里插入图片描述popitem删除最后一个键值对

dict1={'韩梅梅': 80, '李雷': 86, '张三': 77, '王五': 90, '王梅': 88}
dict1.popitem()
#out: ('王梅', 88)

在这里插入图片描述

1.5.3 clear 清空字典

在这里插入图片描述

1.5.4 del 删除字典

在这里插入图片描述

1.6 应用 统计字符串出现次数

s = 'absdcdaa'
d = {}
for i in s:
    d[i] = d.get(i,0)+1
d
#out: {'a': 3, 'b': 1, 's': 1, 'd': 2, 'c': 1}

2 集合: set 无序可变序列

集合常用来对其他数据类型进行去重

2.1 创建

集合是一种无序的可变的容器,对应数学中的集合,标志性符号是花括号{}
集合与字典类似,集合中的元素被看做的字典中的键(里面的元素需要是不可变的数据类型),集合里面没有重复值

2.1.1 用{} 创建

set1 = {1,2,'a','b'}
set1
#out: {1, 2, 'a', 'b'}
type(set1)
#out: set

2.1.1 用set( )创建

set2 = set([1,2,'a','b'])  #或者set2 = set((1,2,'a','b'))
set2
#out: {1, 2, 'a', 'b'}

2.2 查询 in

在这里插入图片描述

2.3 修改 set1.update(set2)

在这里插入图片描述

2.4 增加 add

在这里插入图片描述
在这里插入图片描述

2.5 删除

2.5.1 pop随机删除

在这里插入图片描述

2.5.2 按照元素值删除

在这里插入图片描述

2.5.3 清空 clear

在这里插入图片描述

2.6 专属操作 求并集,交集,差集,子集判断,等于和不等于

在这里插入图片描述在这里插入图片描述

2.7 应用 其他数据类型进行去重

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/3669.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分布式搜索———黑马旅游

案例功能实现 : ● 酒店搜索和分页 ● 酒店结果过滤 ● 我周边的酒店 ● 酒店竞价排名 资源链接 hoteld-demo工程:https://pan.baidu.com/s/1YlKz6vxcm7VWXAWPlUiBqg 提取码:GY66 进入hoteld-demo工程,启动服务,打开浏览器进入…

uniapp微信小程序半屏跳转小程序

1、资料设置申请绑定 进入微信小程序 设置 -> 第三方设置 -> 半屏小程序管理 添加需要绑定的小程序的appid 等待审核,审核通过后开始写代码 2、代码编写 (1)、以前的跳转方式是uni.navigateToMiniProgram 换成wx.openEmbeddedMiniP…

Spring核心思想

文章目录1. Spring核心思想1.1 Spring是什么1.2 什么是容器1.3 什么是loC1.3.1 传统开发1.3.2 如何解决传统开发中耦合度高的问题1.3.3 控制反转程序的编写1.4 理解Spring loC1.5 什么是DI1. Spring核心思想 1.1 Spring是什么 我们通常说的Spring是Spring Framework(Spring框…

一个非常实用的分布式 JVM 监控工具

介绍 该项目为了方便开发者更快监控多个远程主机jvm,如果你的项目是Spring boot那么很方便集成,jar包引入即可,不是Spring boot也不用气馁,你可以快速自行初始化一个Spirng boot程序引入jar包即可 效果展示 整体架构 git地址 ht…

Kafka由浅入深(6) Sender线程执行源码解析

一、KafkaProducer消息流程图 1.1 KafkaProducer 消息架构图 1.2 KafkaProducer 消息架构分为两部分 第一部分是KafkaProducer主线程 主要逻辑提供消息拦截器、序列化器、和分区器的默认实现和对外自定义扩展功能,已经将消息追加并缓存到累加器RecordAccumulator…

NeurIPS 2022 | 涨点神器!利用图像辅助三维点云分析的训练新范式

原文链接:https://www.techbeat.net/article-info?id4212 作者:颜旭 点云作为一种基本的三维表征形式,活跃在自动驾驶、机器人感知等多种任务上。尽管三维点云分析在近年来取得了良好的发展,但由于点云其本身往往是无序、无纹理以…

OpenCV笔记--人脸识别算法Eigenfaces和Fisherfaces

目录 1--前言 2--处理ORL数据集 3--Eigenfaces复现过程 4--Fisherfaces复现过程 5--分析 1--前言 ①SYSU模式识别课程作业 ②配置:基于Windows11、OpenCV4.5.5、VSCode、CMake(参考OpenCV配置方式) ③原理及源码介绍:Face…

云栖探馆!云小宝首秀遇上老司机小龙,猜猜谁赢了?

为啥人人都喜欢秋天呢?因为我们打喷嚏都是“爱秋”啊~ 为啥大家会来云栖大会呢?因为云栖大会让我们在一“栖”啊~ 2022云栖大会龙蜥峰会,小龙来啦~! ​ 去年,小龙作为萌新来到云栖大会&#…

归并排序.

归并排序介绍 归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用金典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各个答案"修补"在一起,即分而治之) 归并排序的思想示…

为什么程序员会秃头?盘点程序员糟心的几大因素

程序员与脱发似乎存在某种必然的逻辑连接,程序员秃头已经成为大家心中的思维定势。 一提到程序员,难免会想起来java, c, python以及无休止的debug环节,不难想象经常会有程序员跳楼自杀的情况。因为实在是生存不易&…

L5W1作业1 手把手实现循环神经网络

欢迎来到课程5的第一个作业!在此作业中,你将使用numpy实现你的第一个循环神经网络。 循环神经网络(RNN)在解决自然语言处理和其他序列任务上非常有效,因为它们具有“记忆”,可以一次读取一个输入 x⟨t⟩x^…

C语言百日刷题第六天

C语言百日刷题第六天51.鸡兔同笼问题52.输出所有形如aabb的完全平方数53.3n1问题54.输出100~999的所有水仙花数55.韩信点兵56.倒三角形57.求子序列的和58.分数化小数59.开灯问题60.蛇形填数51.鸡兔同笼问题 分析:小学生数学问题。设鸡为a个,兔为b个&…

大数据技术基础实验十:Hive实验——新建Hive表

大数据技术基础实验十:Hive实验——新建Hive表 文章目录大数据技术基础实验十:Hive实验——新建Hive表一、前言二、实验目的三、实验要求四、实验原理五、实验步骤1、启动Hive2、创建表3、显示表4、显示表列5、更改表6、删除表或者列六、最后我想说一、前…

vue学习笔记——简单入门总结(三)

文章目录1.Vue的理解:1.1.mvvm模型:1.2.vue2的数据代理:1.3.vue2的生命周期:1.4.vue中的render函数:1.5. mixin混入:2.Vue组件间通信:2.0.props:2.1.全局事件总线:2.2.消…

WeMos Mini ESP32-S2FN4R2介绍

WeMos Mini ESP32-S2FN4R2介绍LOLIN S2 Mini V1.0.0 ESP32-S2 4MB FLASH 2MB PSRAM WIFI开发板 🌼功能介绍 基于 ESP32-S2FN4R2TYPE-C USB27个数字输入/输出引脚,所有引脚都支持中断/pwm/I2C/单线ADC、DAC、I2C、SPI、UART、USB OTG 📍 详细…

棋盘(马蹄集)

棋盘 难度&#xff1a;白银 0时间限制&#xff1a;1秒 巴占用内存&#xff1a;64M 求一个N*N棋盘中的方块总数。 格式 输入格式&#xff1a;输入整型N 输出格式&#xff1a;输出整型 CSDN盛溪的猫 #include<bits/stdc.h> using namespace std; int main(){ long n,sum1;…

Mybatis要点总结

一、了解orm框架 1.什么是ORM框架&#xff1a;对象关系映射&#xff08;Object Relational Mapping&#xff0c;简称ORM&#xff09;&#xff0c;该模式是为了解决面向对象与关系数据库互补匹配的现象的技术&#xff1b;orm框架是连接数据库的桥梁&#xff0c;主要提供了人持久…

大数据技术之Zookeeper总结Ⅰ

zookeeper总结目录1. Zookeeper 入门1.1 zookeeper概述1.2 Zookeeper特点1.3 ZooKeeper 数据模型的结构2. Zookeeper 本地安装2.1 本地模式安装2.2 配置参数解读3. Zookeeper 集群操作3.1 集群操作3.2 Zookeeper 集群启动停止脚本3.3 客户端命令行语法1. Zookeeper 入门 1.1 z…

数据结构七:七大排序

目录 1&#xff1a;排序的概率 2.插入排序 2.1&#xff1a;直接插入排序-----稳定 2.1.1&#xff1a;基本思想 2.2&#xff1a;希尔排序 2.2.1&#xff1a;概念&#xff1a; 3.选择排序 3.1&#xff1a;选择排序 3.1.1&#xff1a;概念 3.2:堆排序 4.交换排序 4.1&…

微信小程序自动化测试之路

1. 前言 在每次发布新版本之前、都需要回归核心功能、已确保上线后小程序也能按照预期运行. 目前这部分回归工作是由测试同事手工去验证测试用例、按照每周一版本的迭代节奏、回归就花了测试挺多时间的. 最近前端工作比较轻松、故在思考能否把这部分重复的工作交给程序自动来进…