Python编程技巧 – 使用字典

news2025/2/24 11:21:09

Python编程技巧 – 使用字典

Python Programming Skills – Using Dictionary

Dictionary, 即字典,这是Python语言的一种重要的数据结构;Python字典是以键(key)值(value)对为元素,来存储数据的集合。

前文提到Python列表,即List; 但字典和列表不同,它使用大括号{ }来指定包装。

{ key1 : value1, key2 : value2, key3 : value3… … }

本文简要介绍字典及其使用技巧,包括如何创建字典、添加值,字典条目及引用,以及如何用构造器创建字典等。

1. 创建字典

比如,在登记人员基本信息时,可采用键值对存储学生信息:

students = { ‘name’ : ‘Bob’, ‘age’ : 20, ‘gender’ : ‘male’}

这个students就是典型的字典,表达了学生的姓名、年龄和性别这些基本信息。由此看来,它很像一个二维表格。

在字典中,是一系列唯一的值,同一个字典的键不能重复。同时,每一个键都对应一个数据对象,叫作。上面这个students字典对象中,名叫Bob的学生,具有年龄20,和性别男的特征;如果换成另一个人(对象),那么,就类似于一张二维表,可存入不同学生的数据信息。

2. 给字典添加值

与上述字典类似,我们创建另一个字典,即一个给学生评分的字典:

grade_dict = {‘Bob’ : 3.9, ‘Sue’ : 3.9,  ‘Dick’ : 2.5}

上述语句包含了三个条目。键分别为字符串’Bob’, ‘Sue’ 和’Dick’; 它们分别对应于值3.9, 3.9 和2.5。

创建了字典后,可以给字典添加条目,也就是给字典添加值。如下代码:

grade_dict[‘Bill G’] = 4.0

此时,打印这个字典,会发现真正添加了这个新条目,运行结果如下图:
在这里插入图片描述

3. 键的类型

字典需要遵循以下的规则,即所有键必须是相同的类型,或者,至少是可以兼容的类型,例如:整型和浮点型。

在确定相同类型的前提下,字典如果尝试获取特定键的值且该键不存在,那么Python会抛出异常。为了避免此类情况发生,可以使用get方法确保指定的键存在,如下格式,

dictionary.get(key [, default_value])

方括号中表示可选条目。如果键存在,就返回其在字典中的对应值;否则,返回default_value(如果已指定), 或者返回None(如果未指定)。

我们创建另一段代码,用来计算单词的出现频率:

s = input(“Enter a string:)).split()
word_counter = {}
for word in s:
  word_counter[word] = word_counter.get(word, 0) + 1

最后,打印输出结果如下图:

在这里插入图片描述

上述代码按照一定的逻辑执行:

1) 当找到一个新单词时,将该单词以值0 + 1的形式输入字典中;
2) 如果找到了已有单词,则get返回该单词的出现频率,然后将其加1;
3) 因此,如果找到了一个单词,则它的频率计数增加1;如果没有找到该单词,它将被添加到字典中,值为1。split方法用于将字符串分成单个单词列表。

4. 字典条目

在这个字典中,它的条目是有序的,可更改的,并且不允许重复;字典每个条目都由键值对的形式表示;如果要表示它,可以使用键名进行引用。

让我们换一个字典,如下所示:

thisdict = {
  "brand": "Ford",
  "model": "Mustang",
  "year": 1964
}

用这种格式来表示字典,显得清晰、简约。要引用字典条目,用以下命令:

print(thisdict[“brand’])

打印输出的结果:

“Ford”

字典条目的值,可以是任意数据类型。看以下代码示例:

thisdict = {
  "brand": "Ford",
  "electric": False,
  "year": 1964,
  "colors": ["red", "white", "blue"]
}

它包含的数据类型由有字符串型、整型、布尔型和列表型。

5. 有序的字典

从 Python 版本 3.7 开始,字典变成有序的。(在 Python 3.6 及更早版本中,字典是无序的。)
当我们说字典是有序的时,这意味着项目有一个定义的顺序,并且该顺序不会改变。

无序意味着字典条目没有定义的顺序,您不能像上述示例一样,使用索引引用具体的条目。

当然,字典是可以改变的,这意味着,我们能修改、增加或者删除所创建字典的条目。

键不允许复制。字典不允许两个条目是同一个键。示例代码如下:

thisdict = {
  "brand": "Ford",
  "model": "Mustang",
  "year": 1964,
  "year": 2020
}
print(thisdict)

运行结果如下图:
在这里插入图片描述

可以看到,虽然上面的字典thisdict里,键year拥有两个值:1964和2020, 但实际上只允许一个值存在,因此后者覆盖了前者,结果为:

{'brand': 'Ford', 'model': 'Mustang', 'year': 2020}

6. 类型与dict()构造器

在Python语言中,可以用type方法来得到字典的类型,如下代码:

thisdict = {
  "brand": "Ford",
  "model": "Mustang",
  "year": 1964
}
print(type(thisdict))

执行结果如下图:

在这里插入图片描述

可以看到,返回的结果是<class ‘dict’>,说明字典是对象(拥有类的实例)。

Python提供了dict()构造器来创建字典, 示例代码如下:

thisdict = dict(name = "John", age = 36, country = "Norway")
print(thisdict)

运行输出结果如下图:

在这里插入图片描述
可以看到,被赋值的变量thisdict,已经变身为一个字典。

7. 小结

字典是对象。字典的数据可以是任意的数据类型;它的条目由键值对组成,每个条目只允许有一个键;字典可以修改、添加和删除条目。字典可以由构造器生成。

技术好文陆续推出,全部亲测,敬请关注。

喜欢就点赞哈,您的支持,我的动力。😊

相关阅读:

  1. Python编程技巧 - 使用字符串(Strings)
  2. Python编程技巧 - 对象和类
  3. Python编程技巧 - 使用列表(Lists)
  4. Python编程技巧 - 转换二进制、八进制和十六进制的函数
  5. Python编程技巧 - 函数入门
  6. 安装最新版Visual Studio Code来开发Python应用程序
  7. 2023最新版Python 3.12.0安装使用指南
  8. 安装2023最新版PyCharm来开发Python应用程序

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

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

相关文章

春秋云境靶场CVE-2022-30887漏洞复现(任意文件上传漏洞)

文章目录 前言一、CVE-2022-30887描述和介绍二、CVE-2021-41402漏洞复现1、信息收集2、找可能可以进行任意php代码执行的地方3、漏洞利用找flag 总结 前言 此文章只用于学习和反思巩固渗透测试知识&#xff0c;禁止用于做非法攻击。注意靶场是可以练习的平台&#xff0c;不能随…

【电路笔记】-星三角变换(Star-Delta Transformation)

星三角变换&#xff08;Star-Delta Transformation&#xff09; 文章目录 星三角变换&#xff08;Star-Delta Transformation&#xff09;1、概述1.1 单相配置1.2 多相配置 2、三相连接2.1 Y配置2.2 Δ配置 3、Y-Δ 和 Δ-Y 变换3.1 Y-Δ变换3.2 Δ-Y变换3.3 应用 4、总结 本文…

使用ssh在本地环境(Windows)连接虚拟机以及其中的docker容器

配置虚拟机防火墙 防火墙的一系列操作需要root权限&#xff0c;默认是没有root密码的&#xff0c;所以首先需要设置root密码&#xff1a; sudo passwd root按提示完成root密码设置 切换到root账户 su root启用22端口并重启防火墙 firewall-cmd --permanent --add-port22/tc…

【zabbix监控四】zabbix之监控tomcat服务报警

一、监控tomcat服务是否正常运行 1、客户端部署 首先要在zabbix-agent客户端上安装tomcat服务&#xff0c;并能正常启动和关闭 1.1 客户端编写脚本 vim /opt/tomcat.sh#!/bin/bash anetstat -natp |grep 8080|awk {print $6}|grep LISTEN if [[ $a LISTEN ]];thenecho &qu…

【目标测距】雷达投影测距

文章目录 前言一、读取点云二、点云投影图片三、读取检测信息四、点云投影测距五、学习交流 前言 雷达点云投影相机。图片目标检测&#xff0c;通过检测框约束等等对目标赋予距离。计算消耗较大&#xff0c;适合离线验证操作。在线操作可以只投影雷达检测框。 一、读取点云 py…

HandBrake :MacOS专业视频转码工具

handbrake 俗称大菠萝&#xff0c;是一款免费开源的视频转换、压缩软件&#xff0c;它几乎支持目前市面上所能见到的所有视频格式&#xff0c;并且支持电脑硬件压缩&#xff0c;是一款不可多得的优秀软件 优点 ∙Windows, Linux, Mac 三平台支持 ∙开源、免费、无广告 ∙支…

SSM2

DataSource mybatis与Spring整合 事务加载业务层上面 开启事务驱动 上面都是声明式开启事务 图书管理系统 命名规范: java命名规范:驼峰命名法类:大驼峰变量,属性名.方法名:小驼峰 常量使用下划线分割:全大写,单词与单词之间下划线分割数据库命名规范:常用命名规范:下划线…

Python将原始数据集和标注文件进行数据增强(随机仿射变换),并生成随机仿射变换的数据集和标注文件

Python将原始数据集和标注文件进行数据增强&#xff08;随机仿射变换&#xff09;&#xff0c;并生成随机仿射变换的数据集和标注文件 前言前提条件相关介绍实验环境生成随机仿射变换的数据集和标注文件代码实现输出结果 前言 由于本人水平有限&#xff0c;难免出现错漏&#x…

基于单片机K型热电偶温度采集报警系统

**单片机设计介绍&#xff0c; 基于单片机K型热电偶温度采集报警系统 文章目录 一 概要简介系统特点系统组成工作原理应用领域 二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 # 基于单片机K型热电偶温度采集报警系统介绍 简介 该系统是基于单片…

Unity--互动组件(Scrollbar)||Unity--互动组件(DropDown )

此组件中的&#xff0c;交互&#xff0c;过渡&#xff0c;导航与文章&#xff08;Unity--互动组件&#xff08;Button&#xff09;&#xff09;中的介绍如同&#xff1b; handle rect&#xff1a;&#xff08;父节点矩形&#xff09; 用于控件的滑动“句柄”部分的图形&#xf…

Harmony Ble 蓝牙App (一)扫描

Harmony Ble 蓝牙App &#xff08;一&#xff09;扫描 前言正文一、创建工程二、工程配置① 权限配置② Debug配置③ UI配置 三、扫描① 扫描接口② 扫描类 四、业务处理① Slice的生命周期② 蓝牙开关和动态权限请求 五、扫描设备六、显示设备① 自定义蓝牙类② 提供者③ 显示…

【机器学习】037_暂退法

一、实现原理 具有输入噪音的训练&#xff0c;等价于Tikhonov正则化 核心方法&#xff1a;在前向传播的过程中&#xff0c;计算每一内部层的同时注入噪声 从作用上来看&#xff0c;表面上来说是在训练过程中丢弃一些神经元 假设x是某一层神经网络层的输出&#xff0c;是下一…

​EMNLP 2023 findings | 生成式框架下解决输入扰动槽填充任务

©PaperWeekly 原创 作者 | 回亭风 单位 | 北京邮电大学 研究方向 | 自然语言理解 论文标题&#xff1a; DemoNSF: A Multi-task Demonstration-based Generative Framework for Noisy Slot Filling Task 论文链接&#xff1a; https://arxiv.org/abs/2310.10169 代码链接…

【Linux】套接字编程

目录 套接字 IP PORT TCP和UDP的介绍 TCP UDP 网络字节序 转换接口 UDP服务器的编写 服务器的初始化 socket bind sockaddr 结构 服务器的运行 数据的收发 业务处理 客户端的编写 运行效果 拓展 套接字 &#x1f338;首先&#xff0c;我们先思考一个问题…

11.4MyBatis(基础)

一.搭环境 1.创建完SSM项目,添加MySQL和MyBatis后,项目启动一定会报错,这是正常情况. 2.配置文件 properties: server.port9090 spring.datasource.urljdbc:mysql://127.0.0.1:3306/test1?characterEncodingutf8&useSSLfalse spring.datasource.usernameroot spring.d…

Linux内核的安装

1.通过tftp 加载内核和根文件系统 即sd内存卡启动&#xff1a; SD卡的存储以扇区为单位,每个扇区的大小为512Byte, 其中零扇区存储分区表&#xff08;即分区信息&#xff09;,后续的扇区可自行分区和格式化&#xff1b; 若选择SD卡启动&#xff0c;处理器上电后从第一个扇区开…

开发仿抖音APP遇到的问题和解决方案

uni-app如何引入阿里矢量库图标/uniapp 中引入 iconfont 文件报错文件查找失败 uni-app如何引入阿里矢量库图标 - 知乎 uniapp 中引入 iconfont 文件报错文件查找失败&#xff1a;‘./iconfont.woff?t1673007495384‘ at App.vue:6_宝马金鞍901的博客-CSDN博客 将课件中的cs…

企业微信将应用安装到工作台

在上篇中介绍了配置小程序应用及指令、数据回调获取第三方凭证&#xff1b; 本篇将介绍如何将应用安装到企业工作台。 添加测试企业 通过【应用管理】->【测试企业配置】添加测试企业。 通过企业微信扫描二维码添加测试企业。 注意&#xff1a;需要扫描的账号为管理员权限…

让别人访问电脑本地

查看本地IP地址&#xff1a; 使用ipconfig&#xff08;Windows&#xff09;或ifconfig&#xff08;Linux/macOS&#xff09;命令来查看你的计算机本地网络的IP地址。确保*****是你的本地IP地址。 防火墙设置&#xff1a; 确保你的防火墙允许从外部访问*****。你可能需要在防火…

万字解析设计模式之代理模式

一、代理模式 1.1概述 代理模式是一种结构型设计模式&#xff0c;它允许通过创建代理对象来控制对其他对象的访问。这种模式可以增加一些额外的逻辑来控制对原始对象的访问&#xff0c;同时还可以提供更加灵活的访问方式。 代理模式分为静态代理和动态代理两种。静态代理是在编…