Python学习-----无序序列1.0(字典的创建、查看、添加、修改、删除/替换)

2023-11-16

目录

前言:

字典是什么

字典的特点

1.字典的创建

(1)直接创建{} 

 (2)dict() 函数创建

2.字典的查询

(1)get()函数

(2)获取字典一组内容

3.字典键值对的添加

(1)直接添加

(2)setdefault() 函数

4.字典的修改

update() 函数

5.字典键对值的删除

(1)pop()函数

(2)popitem() 函数

(3)clear()清空字典

 (4)del 删除方法


前言:

        前面在Python的学习中,我们已经讲过了关于Python中的序列类型有有序序列和无序序列Python学习------起步3(序列与数据类型转换)_守约斯维奇的博客-CSDN博客,之前讲了有序序列中的列表,元组和字符串等相关操作;而今天我会讲解无序序列中的字典相关操作。

字典是什么

        之前学习有序序列都知道,有序序列的特点是有指定的位置,可以去通过下标去表示一个元素。而对于无序序列是没有下标的,那我们是通过什么去处理无序序列呢?

        就以字典而言,字典最大的特点是有一个(key),我们可以去通过这个键来访问字典里面的内容,其实类似于有序序列的下标。字典是一个键对应一个值的,是一种映射关系,而在数学上表现为函数,一个自变量对应一个因变量,所以我们可以去通过这个‘自变量’来对‘因变量进行处理’。字典(dictionary)在Python中是除了列表以外最灵活的数据类型了。

 实质上就是一个key对应一个value,通过key去访问value

字典的特点

1.字典是无序的(无序序列,以键值对的方式去储存数据)

2.字典是可变的(可以进行直接修改) 

3.字典中的键(key)与数据(value)是一一对应的

1.字典的创建

字典的表示:

字典名 = {

键:数据

}

比如 d = {'数学':100,'语文':100,'英语':100}

如果是创建一个空的字段的话就直接 d = {}

作用:用键值对的方式对数据进行存储,有对数据进行一个解释说明,有一个比较好的可读性

注意事项:创建字典的时候,键 如果出现了重复的话,那么重复键的内容就会把上一个的给覆盖掉

(1)直接创建{} 

示例1: 

d = {'数学':100,'语文':100,'英语':100,False:15}
print(d,type(d))
#输出结果:{'数学': 100, '语文': 100, '英语': 100, False: 15} <class 'dict'>

示例2:

#创建一个空字典
d={}
print(d,type(d))
#输出结果:{} <class 'dict'>

#输出字典中的单个元素
dd={'name':'Jack','age':19,'gender':'male'}
print(dd['age'],type(dd['age']))
#输出结果:19 <class 'int'>

示例3:

# 当字典中的键重复的时候,原来的值将会被覆盖
dd={'name':'Jack','age':19,'gender':'male','age':20}
print(dd['age'])
#输出结果:20

 (2)dict() 函数创建

示例:

#dict()函数直接创建
student = dict(name='jack', age=22)
print(student,type(student))
#输出结果:{'name': 'jack', 'age': 22} <class 'dict'>

这种写法是通过函数来实现的,同样键与数据也是一一对应的

注意:字典的 键 是唯一的不可变的,不可修改的,虽然说键可以用字符串,布尔类型,元组类型,或者整等等,这些类型都是不可变的,而列表和字典还有接下来要讲到的集合都是具有可变性,所以不可以作为字典的 键!

2.字典的查询

(1)get()函数

格式:

字典名.get(key)

返回:如果存在就返回这个数据,如果不存在就返回None

d={'name':'Jack','age':19,'home':'广东'}
print(d.get('home'))
print(d.get('phone'))
#输出结果:
#广东
#None

(2)获取字典一组内容

格式:

字典名.keys()     #获取字典所有的键
字典名.values()    #获取字典所有的值
字典名.items()    #获取字典所有的键值对

示例: 

d={'name':'Jack','age':19,'home':'广东'}
print(d.keys(),type(d.keys()))
print(d.values(),type(d.values()))
print(d.items(),type(d.items()))

这个是一个很普通的查询方法,了解一下就行了

3.字典键值对的添加

(1)直接添加

格式:

字典名[key] = 值

d={'name':'Jack','age':19,'home':'广东'}
print(d)
d['phone']='137********'
print(d)

 这种方式也是最常见的方式,直接添加就行了,没有多余的操作

(2)setdefault() 函数

格式:

字典名.setdefault(键,值)

注意事项:

1.当值没有传入进去,会默认为None

2.当键存在的时候,不会对其对应的值进行修

 示例1:

d={'name':'小明'}
d.setdefault('语文',88)
print(d)
d.setdefault('数学',99)
d.setdefault('英语',98)
print(d)

 示例2:

d={'name':'小明','语文':88,'数学':99,'英语0':98}
d.setdefault('地理')
print(d)
d.setdefault('语文',100)
print(d)

 这里可以看到,如果没有去设置value的值的时候,系统是默认为None;而且如果再次添加已有的键的时候,原来键对应的值value不会被修改

4.字典的修改

update() 函数

格式:

字典名.update({键:值,键1:值1,键2:值2……})

作用:即可以增加也可以修改 , 并且一次可以增加多个值

#修改功能
d={'name':'小明','语文':88,'数学':99,'英语':98}
d.update({'语文':100})
print(d)

#添加单个
d.update({'地理':96})
print(d)

#添加多个
d.update({'物理':60,'化学':77})
print(d)

 相较于setdefault() 函数,我个人还是比较建议用updata() 函数去实现数据的添加,同时这个函数还具备修改功能。这个函数整体还是偏向于修改功能的。

5.字典键对值的删除

(1)pop()函数

这个函数在之前学习列表的时候我是讲过的,这个函数的使用范围还是比较广的,也可以用于字典键对值的删除                                     链接:Python学习-----起步4(列表元素的添加,删除,修改,查询,获取长度)_守约斯维奇的博客-CSDN博客

格式:

字典名.pop(key)

作用:指定键删除,key和value都删除

d={'name':'小明','语文':88,'数学':99,'英语':98}
d.pop('英语')
print(d)
#输出结果:{'name': '小明', '语文': 88, '数学': 99}

(2)popitem() 函数

格式:

字典名.popitem()

作用:删除掉字典最后一个键值对

d={'name':'小明','语文':88,'数学':99,'英语':98,'物理':60}
d.popitem()
print(d)
#输出结果:{'name': '小明', '语文': 88, '数学': 99, '英语': 98}

可见最后一个物理:60 被删除了

(3)clear()清空字典

格式:

字典名.clear()

作用:把字典里面所有键值对全部删除

d={'name':'小明','语文':88,'数学':99,'英语':98,'物理':60}
print(d)
d.clear()
print(d)

 (4)del 删除方法

这个也是之前在列表的删除讲过,这个方式也是很经常用到的,不仅仅可以去删除序列里面的某个数据,而且还可以把整个序列变量给删掉,所以使用的时候要看清楚删除的对象是什么 

格式:

del 字典名[key]

#删除字典中的一个键值对
d={'name':'小明','语文':88,'数学':99,'英语':98,'物理':60}
del d['数学']
print(d)
#输出结果:{'name': '小明', '语文': 88, '英语': 98, '物理': 60}

#删除整个字典
del d
print(d) 
#输出结果会报错的,因为字典已经被删除了,不存在了,自然就不可能打印出来

        OK,这一期就到这里了,下一期讲无序序列中的集合,thanks~~~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python学习-----无序序列1.0(字典的创建、查看、添加、修改、删除/替换) 的相关文章

  • 最近的 AWS 区域的客户端 IP 地址

    Question 我想从客户端设备将一些数据上传到 AWS 但我想上传到最近的 AWS 区域的 S3 存储桶 同样 我希望能够从最近的区域下载 当然 我会在每个区域设置一个存储桶 我可以使用一个系统 它可以获取客户端的 IP 地址 然后确定
  • 删除 python vaex 中的重复行

    我正在使用 python vaex 但我不知道如何删除数据框中的重复行 例如 在 pandas 中存在以下方法drop duplicates vaex中有没有类似的功能 似乎还没有 但我们应该在某个时候期待这个功能 其间 有vaex创始人的
  • 指定的可执行文件不是该操作系统平台的有效应用程序。

    我不断收到错误消息System ComponentModel Win32Exception The specified executable is not a valid application for this OS platform 当
  • 使用 Tkinter 进行多线程 Python

    我用这些函数在画布上画小圆圈 这是绘制圆圈的函数 class Fourmis def init self can posx posy name radius self can can self largeur can int self ca
  • pygraphviz,导入错误:未定义的符号:Agundirected

    import pygraphviz Traceback most recent call last File
  • @monthly cron 作业不可靠

    我们的客户希望我们每月创建一份报告 过去 我们使用 monthly cron 作业来完成此任务 但这并不可靠 服务器可能会在这一分钟内宕机 Cron 不会重新运行这些作业 如果服务器已启动 此时数据库可能无法访问 如果服务器已启动且数据库已
  • Python 包?

    好吧 我认为无论我做错了什么 它可能都是显而易见的 但我无法弄清楚 我已经阅读并重新阅读了有关包的教程部分 我唯一能想到的是这不起作用 因为我直接执行它 这是目录设置 eulerproject init py euler1 py euler
  • Ttk Treeview:跟踪键盘选择

    这是一个带有 ttk 树视图的 Tk 小部件 当用户单击该行时 会执行某些功能 此处仅打印项目文本 我需要的是以下内容 最初的重点是文本输入 当用户按下 Tab 键时 焦点应该转到第一行 并且应该执行绑定到 Click 事件的函数 当用户使
  • 解析器生成

    我正在做一个项目软件抄袭检测 我打算用C语言来做这件事 因为我应该创建一个令牌生成器和一个解析器 但我不知道从哪里开始 任何人都可以帮助我解决这个问题 我创建了一个令牌数据库 并将令牌与我的程序分开 接下来我想做的就是比较两个程序以查明它是
  • Python Subversion 包装器库

    在颠覆的文档 http svnbook red bean com en 1 7 svn developer usingapi html svn developer usingapi otherlangs有一个从 Python 使用 Subv
  • BeautifulSoup 抓取街道地址

    我正在使用最底部的代码来获取weblink 以及清真寺名称 不过我也想得到面值 and 街道地址 请帮助我被困住了 目前我得到以下信息 Weblink div class subtitleLink a href http www salat
  • 为什么 PySpark 中的 agg() 一次只能汇总 DataFrame 的一列? [复制]

    这个问题在这里已经有答案了 对于下面的数据框 df spark createDataFrame data Alice 4 300 Bob 7 677 schema name High 当我尝试找到最小值和最大值时 我只得到输出中的最小值 d
  • 来自异常导入 PendingDeprecationWarning ModuleNotFoundError:没有名为“异常”的模块

    我正在尝试使用Python 创建一个word 文档 我在终端中 pip install python docx 我的代码如下所示 from docx import Document document Document document sa
  • Python:多重分配与单独分配速度

    我一直在寻求从我的代码中挤出更多的性能 最近 在浏览时这个 Python 维基页面 https wiki python org moin PythonSpeed 我发现了这个说法 多重分配比单独分配慢 例如 x y a b 比 x a y
  • 在 Mac OS x 10.7.5 中运行 Scrapy 所需的文件,使用 Python 2.7.3 IEPD_free(32 位)

    我是第一次测试 scrapy 使用命令安装后 sudo easy install U scrapy 一切似乎都运行正常 但是 当我运行时 scrapy startproject tutorial 我得到以下信息 luismacbookpro
  • Django ConnectionAbortedError:[WinError 10053]已建立的连接被主机中的软件中止

    我将 django 与 postgresql 一起使用 每当我尝试保存或删除任何内容时 都会发生此错误 Traceback most recent call last File c program files x86 python35 32
  • numpy 中的分层抽样

    在 numpy 中我有一个这样的数据集 前两列是索引 我可以通过索引将数据集分成多个块 即第一个块是 0 0 第二个块是 0 1 第三个块 0 2 然后是 1 0 1 1 1 2 等等 每个块至少有两个元素 索引列中的数字可能会有所不同 我
  • 按工作日分组的熊猫 (M/T/W/T/F/S/S)

    我有一个 pandas 数据框 其中包含 YYYY MM DD arrival date 形式的时间序列 作为索引 我想按每个工作日 周一到周日 进行分组 以便计算其他日期列是平均值 中位数 标准差等 我最终应该只有七行 到目前为止我只知道
  • Python:ConfigParser.NoSectionError:没有部分:“TestInformation”

    我使用上面的代码收到 ConfigParser NoSectionError No section TestInformation 错误 def LoadTestInformation self config ConfigParser Co
  • Python正则表达式:如何用不同的值替换出现的每个实例?

    假设我有这个字符串 s blah blah blah 使用Python正则表达式 如何用不同的值替换 blah 的每个实例 例如 我有一个值列表v 1 2 3 你可以使用re sub打回来 http docs python org libr

随机推荐

  • pycharm的git密码错误

    原文地址 https www cnblogs com wangjian941118 p 10721650 html pycharm使用gitlab输错密码解决办法 这个问题困扰我两周了 今天抱着试一试的想法 随手搜了一下 出现了新的结果 就
  • 去银行写代码是什么体验?

    最近在知乎上的一个回答火了 关于如何学习操作系统的 分享给大家 如何学会操作系统这门课程 一线互联网岗位和银行 国企还是有点区别的 这篇文章 讲详细讲一讲银行或者金融科技的相关问题 包括面试 待遇等等 虽然前阵子网传几大互联网公司都去掉了大
  • ChatGPT解决了我的出行规划焦虑

    我的五一出行规划 五一旅游季又将到来 许多人为了规划理想的行程而苦恼 需要投入相当时间来筛选各种信息 然而 现在有了Chat GPT 安排美好旅途变得异常简单 只要您告诉GPT您的日期和目的地 不到30秒就可以生成个性化的行程攻略 同时还可
  • APP兼容性测试如何测试?

    随着 APP 应用范围越来越广 用户群体越来越大 终端设备的型号也越来越多 移动终端碎片化加剧 使得 APP兼容性测试成为测试质量保障必须要考虑的环节 APP兼容性的测试主要包含系统兼容 产商ROM 兼容性 屏幕分辨率兼容 网络兼容 其他兼
  • PHP+nginx完成大文件下载处理

    最近在板子上做文件下载的处理 需求相对简单 一个下载请求过来 根据请求的数据决定给那些文件回去 于是采用了php nginx的方式来处理 尝试 nginx用来处理下载请求 拿到请求以后 调用配置好的php文件 php文件中对请求的参数做处理
  • actuator--基础--6.1--端点解析--health端点

    actuator 基础 6 1 端点解析 health端点 代码位置 https gitee com DanShenGuiZu learnDemo tree master actuator learn actuator01 1 health
  • java队列模拟_Java模拟队列

    用Java模拟队列的出队和进队 1 代码 Java 代码 package com stackANDqueue import java io DataInputStream import java io IOException 循环队列的入队
  • redis 十二. 分布式锁

    目录 一 分布式锁概述 二 redis 锁基础版示例 三 redis 锁进阶 Redlock 四 Redlock 分析 解决集群环境master宕机数据不一致锁不住的问题 锁的定时续期 watchdog源码分析 锁的可重入性分析 释放锁分析
  • ES6 for...in 和 for...of 的区别

    for in 和 for of的区别 遍历数组时 当给数组加上属性时 遍历对象时 总结 for of 是ES6新引入的特性 修复了 ES5 引入的 for in 的不足 关于两者之间的区别 下面列举了一些例子 遍历数组时 let arr 1
  • 5g手机怎么开5g网络

    确保您已经办理了5G套餐 且所处地区有5G网络信号 这样才能接收并使用到5G网络 以华为手机为例 打开 设置 移动网络 点击 启用5G 开关 状态栏上的信号图标就会出现一个5G图标 具体介绍如下 1 首先打开手机 设置 找到并点击 移动网络
  • 【状态估计】卡尔曼滤波器、扩展卡尔曼滤波器、双卡尔曼滤波器和平方根卡尔曼滤波器研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 本文包括 1 标准卡尔曼滤波器 2 扩展卡
  • QT打开文件并显示文件内容

    QT打开文件并显示文件内容 功能描述 当点击一个按钮的时候 实现打开指定类型的文件 并在另一个子窗口中显示文件的内容 核心函数分析 QString QFileDialog getOpenFileName QWidget parent Q N
  • pandas、numpy对txt、xls、csv的文件读取总结

    文件读取 1 csv文件读取 import pandas as pd df1 pd read csv r data HeightWeight csv print df1 import numpy as np data np loadtxt
  • 华为OD机试 - 新员工座位(Java)

    题目描述 工位由序列F1 F2 Fn组成 Fi值为0 1或2 其中0代表空置 1代表有人 2代表障碍物 1 某一空位的友好度为左右连续老员工数之和 2 为方便新员工学习求助 优先安排友好度高的空位 给出工位序列 求所有空位中友好度的最大值
  • 详解Spring的循环依赖问题、三级缓存解决方案源码分析

    0 基础 Bean的生命周期 在Spring中 由于IOC的控制反转 创建对象不再是简单的new出来 而是交给Spring去创建 会经历一系列Bean的生命周期才创建出相应的对象 而循环依赖问题也是由Bean的生命周期过程导致的问题 因此我
  • memory order In x86 asm, ordinary loads and stores already have acquire / release semantics

    Acquire and Release Semantics Generally speaking in lock free programming there are two ways in which threads can manipu
  • 过采样对分类精度的影响有哪些

    过采样是一种在训练分类器时用来增加少数类样本数量的技术 它可以通过复制原有的少数类样本来增加样本数量 过采样可以提高分类精度 因为模型在训练中能够更好地学习少数类样本的特征 然而 过采样也可能导致过拟合 如果复制的样本数量过多 模型可能会过
  • 【华为OD机试真题】过滤组合字符串(C++&java&python)100%通过率 超详细代码注释 代码解读

    华为OD机试真题 2022 2023 真题目录 点这里 华为OD机试真题 信号发射和接收 试读 点这里 华为OD机试真题 租车骑绿道 试读 点这里 过滤组合字符串 题目描述 数字0 1 2 3 4 5 6 7 8 9分别关联 a z 26个
  • k8s配置StatefulSet解读

    什么是StatefulSet 直接参考原博客 k8s配置StatefulSet StatefulSet和Deployment一样 可以保证集群中运行指定个数的pod 也支持横向扩展 但每个pod都是不可互换的 无论pod被怎样调度 它们的标
  • Python学习-----无序序列1.0(字典的创建、查看、添加、修改、删除/替换)

    目录 前言 字典是什么 字典的特点 1 字典的创建 1 直接创建 2 dict 函数创建 2 字典的查询 1 get 函数 2 获取字典一组内容 3 字典键值对的添加 1 直接添加 2 setdefault 函数 4 字典的修改 updat