Python基础(七)之数值类型字典

Python基础(七)之数值类型字典

Python_logo

1、简介

字典(dict),Dictionary:是一种可变类型,可以存储任意类型的元素,如列表、字符串、元组等。

  • 字典是无序的,所以不支持索引和切片。
  • 字典以键值对(key:value)方式存在,可以通过键来访问值。
  • 字典的键key不可以重复,否则只会保留一个,键key可以是任意的数据类型,但不会出现可变的数据类型,保证key的唯一。值value可以重复。

2、创建

  • dict = dict() 创建一个空字典
  • dict = {} 创建一个空字典
  • dict = {key1: value1, key2: value2, key3: value3} 创建一个非空的字典
# 创建空字典
s_dict_empty = {}  # 区分与集合 空集合只能使用set()函数创建
s_dict_empty1 = dict()
# 创建非空字典
s_dict = {1:'hello', 2:'Python'}

3、字典新增

  • dict[key] = value 将key-value的键值对添加到字典中
# 创建字典
s_dict = dict()# 给字典添加元素
s_dict['one'] = 'Hello'
print('打印字典s_dict=', s_dict)# 打印字典s_dict= {'one': 'Hello'}

4、删除字典del

  • del dict 删除字典
s_dict = {1: 'hello', 2: 'Python', 3: 666}
print('删除前的字典s_dict=', s_dict)
del s_dict[3] # 删除字典中key=3的数据
print('删除后的字典s_dict=', s_dict)'''
删除前的字典s_dict= {1: 'hello', 2: 'Python', 3: 666}
删除后的字典s_dict= {1: 'hello', 2: 'Python'}
'''

5、查找字典元素

  • dict[key] = value 通过key可以获取到对应的值
s_dict = {1: 'hello', 2: 'Python', 3: 666}
print('查找key=2的数据:', s_dict[2])  # 查找key=2的数据: Python

6、清空字典 clear

  • dict.clear() 清空字典
s_dict = {1: 'hello', 2: 'Python', 3: 666}
print('清空前的字典s_dict=', s_dict)
s_dict.clear()
print('清空后的字典s_dict=', s_dict)'''
清空前的字典s_dict= {1: 'hello', 2: 'Python', 3: 666}
清空后的字典s_dict= {}
'''

7、 获取字典长度len

  • len(dict) 获取字典的长度
s_dict = {1: 'hello', 2: 'Python', 3: 666}
print('s_dict的长度为:', len(s_dict)) # s_dict的长度为: 3

8、获取字典的所有键key

  • dict.kyes() 获取字典中的所有键
# s_dict.keys() 获取字典的所有key
s_dict = {1: 'hello', 2: 'Python', 3: 666}
print('s_dict的所有key为:', s_dict.keys()) # s_dict的所有key为: dict_keys([1, 2, 3])s_dict_keys = s_dict.keys()
print('获取字典所有key的s_dict_keys的类型为:', type(s_dict_keys)) # 获取字典所有key的s_dict_keys的类型为: <class 'dict_keys'>s_list = list(s_dict_keys)print('s_list= ', s_list) # s_list=  [1, 2, 3]
# 打印s_dict字典的所有键值对,并且将key=2的value修改为'修改一下Python'
for el in s_list:print('key=', el, ',value=', s_dict[el])if el == 2:s_dict[el] = '修改一下Python'print('修改字典后的字典为:')for el in s_list:print('key=', el, ',value=', s_dict[el])'''
key= 1 ,value= hello
key= 2 ,value= Python
key= 3 ,value= 666
修改字典后的字典为:
key= 1 ,value= hello
key= 2 ,value= 修改一下Python
key= 3 ,value= 666
'''

9、获取字典的所有值value

  • dict.values() 获取字典中的所有值
s_dict = {1: 'hello', 2: 'Python', 3: 666}
s_dict_values = s_dict.values()
print('s_dict字典中的所有值:', s_dict_values) # s_dict字典中的所有值: dict_values(['hello', 'Python', 666])
print('s_dict_values的类型为:', type(s_dict_values)) # s_dict_values的类型为: <class 'dict_values'>

10、获取字典中所有的键值对

  • dict.items() 获取字典中的所有键值对
s_dict = {1: 'hello', 2: 'Python', 3: 666}
print('获取字典s_dict的所有键值对:', s_dict.items())
# 获取字典s_dict的所有键值对: dict_items([(1, 'hello'), (2, 'Python'), (3, 666)])for el in s_dict.items():print(type(el)) # <class 'tuple'># 将每个键值对的元组取出来for tupl in el:print(tupl)'''
<class 'tuple'>
1
hello
<class 'tuple'>
2
Python
<class 'tuple'>
3
666
'''

11、判断字典中是否包含元素

  • 使用in 或者 not in 判断元素是否在字典中, 但只能判断键key是否包含,不能判断值value是否在字典中存在
s_dict = {1: 'hello', 2: 'Python', 3: 666}print('判断s_dict中是否包含hello : ','hello' in s_dict) # False
print('判断s_dict中是否包含2 : ',2 in s_dict) # True

12、字典函数setdefault()

  • 若key存在,则返回对应的value,不会将新设置的value返回
  • 若key不存在,且字典中没有对应的value,则返回None,并且将新设置的value存到字典中key对应的value
  • 若key不存在,但新设置了value,则会返回新设置的value,并且将key-value存到字典中
s_dict = {1: 'hello', 2: 'Python', 3: 666}print('存在key和value时:', s_dict.setdefault(2))
print(s_dict)
print('存在key和value,并且设置了新的value时:', s_dict.setdefault(2,'newValue'))
print(s_dict)
print('存在key,但不存在value时:', s_dict.setdefault(4))
print(s_dict)
print('存在key,但不存在value,且设置了新的value时:', s_dict.setdefault(4,'newValue4'))
print(s_dict)s_dict_empty = {}
print('不存在key,也不存在value时:', s_dict_empty.setdefault(5))
print(s_dict_empty)
print('不存在key,也不存在value,但设置了新的value时:', s_dict_empty.setdefault(5, 'newValue5'))
print(s_dict_empty)

13、字典函数get()

  • 若key存在,则返回对应的value,不会将新设置的value返回
  • 若key不存在,且字典中没有对应的value,则返回None,并且新设置的value不存到字典中key对应的value
  • 若key不存在,但新设置了value,则会返回新设置的value,并且key-value不会存到字典中
s_dict = {1: 'hello', 2: 'Python', 3: 666}print('存在key和value时:', s_dict.get(2))
print(s_dict)
print('存在key和value,并且设置了新的value时:', s_dict.get(2,'newValue'))
print(s_dict)
print('存在key,但不存在value时:', s_dict.get(4))
print(s_dict)
print('存在key,但不存在value,且设置了新的value时:', s_dict.get(4,'newValue4'))
print(s_dict)s_dict_empty = {}
print('不存在key,也不存在value时:', s_dict_empty.get(5))
print(s_dict_empty)
print('不存在key,也不存在value,但设置了新的value时:', s_dict_empty.get(5, 'newValue5'))
print(s_dict_empty)

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

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

相关文章

CSS中如何设置单行或多行内容超出后,显示省略号

1. 设置超出显示省略号 css设置超出显示省略号可分两种情况&#xff1a; 单行文本溢出显示省略号…多行文本溢出显示省略号… 但使用的核心代码是一样的&#xff1a;需要先使用 overflow:hidden;来把超出的部分隐藏&#xff0c;然后使用text-overflow:ellipsis;当文本超出时…

软考 系统架构设计师之回归及知识点回顾(7)

接前一篇文章&#xff1a;软考 系统架构设计师之回归及知识点回顾&#xff08;6&#xff09; 11. 云计算 背景 大数据和云计算已成为IT领域的两种主流技术。“数据是重要资产”这一概念已成为大家的共识&#xff0c;众多公司争相分析、挖掘大数据背后的重要财富。同时学术界、…

哔哩哔哩后端Java一面

前言 作者&#xff1a;晓宜 个人简介&#xff1a;互联网大厂Java准入职&#xff0c;阿里云专家博主&#xff0c;csdn后端优质创作者&#xff0c;算法爱好者 最近各大公司的春招和实习招聘都开始了&#xff0c;这里分享下去年面试B站的的一些问题&#xff0c;希望对大家有所帮助…

第十二届蓝桥杯EDA省赛真题分析

前言&#xff1a; 第十二届蓝桥杯EDA比赛用的是AD软件&#xff0c;从第十四届起都是使用嘉立创EDA专业版&#xff0c;所以在这里我用嘉立创EDA专业版实现题目要求。 一、省赛第一套真题题目 主观题整套题目如下&#xff1a; 试题一&#xff1a;库文件设计&#xff08;5分&am…

VS Code 配置类似浏览器中的垂直标签页功能

参考&#xff1a;Dominik Weber - 2022.06.25 (注&#xff1a;原文中的配置有些过时了&#xff0c;所以根据 VS Code 的最新版本进行了调整。) 原作者非常喜欢垂直标签页&#xff0c;只要有可能&#xff0c;就都会使用它们。他主要在浏览器&#xff08;Firefox&#xff09;和…

Python之Web开发中级教程----ubuntu中下载安装Postman

Python之Web开发中级教程----ubuntu中下载安装Postman PostMan 是一款功能强大的网页调试与发送网页 HTTP 请求的 Chrome 插件&#xff0c;可以直接去对我们写出来的路由和视图函数进行调试&#xff0c;作为后端程序员是必须要知道的一个工具。 查看ubuntu系统中是否已经安装了…

VsCode 配置go开发环境之下载go tools

ctrl shift P 选择 go install/update tools&#xff0c;下载go tools 报错&#xff0c; 提升dial err。 将GOPROXY 和 GOSUMDB 按照如下配置&#xff0c;重启IDE即可成功下载 set GOPROXYhttps://goproxy.cn set GOSUMDBoff

程序人生——Java多线程和并发的使用建议

目录 引出多线程和并发建议118&#xff1a;不推荐覆写start方法建议119&#xff1a;启动线程前stop方法是不可靠的建议120&#xff1a;不适用stop方法停止线程 建议121&#xff1a;线程优先级只使用三个等级建议122&#xff1a;使用线程异常处理器提升系统可靠性建议123&#x…

【递归专题】【蓝桥杯备考训练】:有序分数、正则问题、带分数、约数之和、分形之城【已更新完成】

目录 1、有序分数&#xff08;usaco training 2.1&#xff09; 2、正则问题&#xff08;第八届蓝桥杯省赛C A组 & Java A组&#xff09; 3、带分数&#xff08;第四届蓝桥杯省赛Java A组/B组 & C B组/C组&#xff09; 4、约数之和&#xff08;《算法竞赛进阶指南》…

jvm的垃圾回收器以及触发full gc的场景

JVM&#xff08;Java虚拟机&#xff09;的垃圾回收器有很多种&#xff0c;主要包括以下几种&#xff1a; Serial收集器&#xff1a;串行收集器是最古老、最稳定的收集器。它使用单个线程进行垃圾收集工作&#xff0c;在进行垃圾回收时会暂停所有用户线程。 ParNew收集器&#…

ViT如何支持变长序列输入?

当增加输入图像的分辨率时&#xff0c;例如DeiT 从 224 到 384&#xff0c;一般来说会保持 patch size&#xff08;例如9&#xff09;&#xff0c;因此 patch 的数量 N 会发生了变化。那么视觉transformer是如何处理变长序列输入的? DEiT中如何处理mask数据的&#xff1f; 例…

智慧公厕对于智慧城市管理的意义

近年来&#xff0c;智慧城市的概念不断被提及&#xff0c;而智慧公厕作为智慧城市管理的重要组成部分&#xff0c;其在监测、管理和养护方面发挥着重要的作用。智慧公厕不仅是城市市容提升的重要保障&#xff0c;还能提升城市环境卫生管理的质量&#xff0c;并有效助力创造清洁…

5_相机标定2_calibrateCamera()与内外参

彩色角点图片镇楼 opencv官方文档&#xff1a; https://docs.opencv.org/4.8.0/d4/d94/tutorial_camera_calibration.html https://docs.opencv.org/3.4.18/d9/d0c/group__calib3d.html#gaebfc1c9f7434196a374c382abf43439b 相机标定目的&#xff1a; cv::calibrateCamera()的…

Arthas使用案例(二)

说明&#xff1a;记录一次使用Arthas排查测试环境正在运行的项目BUG&#xff1b; 场景 有一个定时任务&#xff0c;该定时任务是定时去拉取某FTP服务器上的文件&#xff0c;进行备份、读取、解析等一系列操作。 而现在&#xff0c;因为开发环境是Windows&#xff0c; 线上项…

SpringBoot(数据库操作 + druid监控功能)

文章目录 1.JDBC HikariDataSource&#xff08;SpringBoot2默认数据源&#xff09;1.数据库表设计2.引入依赖 pom.xml3.配置数据源参数 application.yml4.编写一个bean&#xff0c;映射表5.编写测试类来完成测试1.引入依赖 pom.xml2.使用JdbcTemplate进行测试3.成功&#xff0…

将OpenCV与gcc和CMake结合使用

返回&#xff1a;OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇&#xff1a;OpenCV4.9.0开源计算机视觉库在 Linux 中安装 下一篇&#xff1a; 引言&#xff1a; 近年来&#xff0c;计算机视觉技术在图像处理、目标检测和机器人等方面得到了广泛的应用…

YOLOv9改进策略:注意力机制 | 归一化的注意力模块(NAM)

&#x1f4a1;&#x1f4a1;&#x1f4a1;本文改进内容&#xff1a; NAM作为一种高效且轻量级的注意力机制。采用了CBAM的模块集成并重新设计了通道和空间注意子模块。 yolov9-c-NAMAttention summary: 965 layers, 51000614 parameters, 51000582 gradients, 238.9 GFLOPs 改…

服务器机器学习环境搭建(包括AanConda的安装和Pytorch的安装)

服务器机器学习环境搭建 1 服务器与用户 在学校中&#xff0c;我们在学校中是以用户的身份进行访问学校的服务器的。整体框架大致如下&#xff1a; 我们与root用户共享服务器的一些资源&#xff0c;比如显卡驱动&#xff0c;Cuda以及一些其他的公共软件。 一般情况下&#…

迷茫了!去大厂还是创业?

大家好&#xff0c;我是麦叔&#xff0c;最近我创建了一个 学习圈子 有球友在 星球 里提问。 大厂的layout岗位和小厂的硬件工程师岗位&#xff0c;该如何选择&#xff1f; 这个问题我曾经也纠结过&#xff0c;不过现在的我&#xff0c;I am awake&#xff01; 肯定是有大点大。…

【Java基础知识总结 | 第二篇】深入理解分析ArrayList源码

文章目录 3.深入理解分析ArrayList源码3.1ArrayList简介3.2ArrayLisy和Vector的区别&#xff1f;3.3ArrayList核心源码解读3.3.1ArrayList存储机制&#xff08;1&#xff09;构造函数&#xff08;2&#xff09;add()方法&#xff08;3&#xff09;新增元素大体流程 3.3.2ArrayL…