Python编程技巧 – 使用字典

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应用程序

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【CHI】Ordering保序

本节介绍CHI协议所包含的支持系统保序需求的机制&#xff0c;包括&#xff1a; • Multi-copy atomicity • Completion response and ordering • Completion acknowledgment • Transaction ordering 一、 Multi-copy atomicity CHI协议中所使用的memory model要求为mu…

uniapp开发小程序,包过大解决方案

1、首先和大家说一下 微信小程序 主包限制不能超过2M 分包一共不能超过8M 然后具体解决优化步骤如下&#xff0c; 将主包进行分包 在pages.json 下subPackages里面进行配置分包 分包配置完 配置过的文件都需要进行修改对应的路径 2 、 在运行的时候 一定要勾选 压缩代码 有…

【前端学java】java中的日期操作(12)

往期回顾&#xff1a; 【前端学java】JAVA开发的依赖安装与环境配置 &#xff08;0&#xff09;【前端学 java】java的基础语法&#xff08;1&#xff09;【前端学java】JAVA中的packge与import&#xff08;2&#xff09;【前端学java】面向对象编程基础-类的使用 &#xff08…

pyQt主界面与子界面切换简易框架

本篇来介绍使用python中是Qt功能包&#xff0c;设置一个简易的多界面切换框架&#xff0c;实现主界面和多个子界面直接的切换显示。 1 主界面 设计的Demo主界面如下&#xff0c;主界面上有两个按钮图标&#xff0c;点击即可切换到对应的功能界面中&#xff0c;进入子界面后&a…

江湖再见,机器视觉兄弟们,我已经提离职了,聪明的机器视觉工程师,离职不亏本!

我闻江湖已叹息&#xff0c;又闻人间繁闹闹。同为布衣沦落人&#xff0c;相逢何必曾相识。 此生谁料事事休&#xff0c;道不尽人情冷暖&#xff0c;聚散离合总平常&#xff0c;不似勇气少年时。 我估计今年公司年底是发不出工资了&#xff0c;因为订单续不上。年终奖更是没有&…

vscode 设置vue3 通用页面模板

实现效果&#xff1a; 实现步骤&#xff1a; 1.在项目的 .vscode 目录下创建一个名为 vue3.2.code-snippets 的文件&#xff0c;它是一个 JSON 格式的代码片段文件 {"Vue3.2快速生成模板": {"prefix": "Vue3.2","body": ["<…

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

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

python循环语句

1、while循环 格式&#xff1a; while 判断条件&#xff1a; 执行语句 例子&#xff1a;使用while来计算1到100的总和 无限循环&#xff1a;通过设置条件表达式永远不为false while循环使用else语句&#xff1a;当while后面的条件语句为false时&#xff0c;则执行else的语句…

从入门到精通,mac电脑录屏软件使用教程!

“mac电脑怎么录屏呀&#xff0c;刚买了一台mac电脑&#xff0c;用了几个月感觉挺流畅的&#xff0c;最近因为工作原因&#xff0c;需要用到录屏功能&#xff0c;但是我不会操作&#xff0c;想问问大家有没有简单易懂的录屏教程&#xff0c;谢谢啦。” 在日常生活中&#xff0…

某60区块链安全之不安全的随机数实战二学习记录

区块链安全 文章目录 区块链安全不安全的随机数实战二实验目的实验环境实验工具实验原理实验内容EXP利用 不安全的随机数实战二 实验目的 学会使用python3的web3模块 学会以太坊不安全的随机数漏洞分析及利用 实验环境 Ubuntu18.04操作机 实验工具 python3 实验原理 由…

投资黄金:如何选择正确的黄金品种增加收益?

黄金一直以来都是备受投资者青睐的避险资产&#xff0c;然而&#xff0c;在庞大的黄金市场中&#xff0c;选择适合自己的黄金品种成为影响收益的关键因素。黄金投资并不只有一种方式&#xff0c;而是有很多种不同的黄金品种可以选择。每种黄金品种都有其独特的特点和风险&#…

【手撕数据结构】(三)顺序表和链表

文章目录 一、线性表二、顺序表1.概念及结构2.关于数组3.顺序表分类&#x1f397;️静态顺序表&#x1f397;️动态顺序表 4.接口实现&#xff08;1&#xff09;思路&#xff08;2&#xff09;SeqList.h文件代码功能1&#xff1a;顺序表初始化功能2&#xff1a;销毁顺序表功能3…

QT基础学习

2创建项目 2.1使用向导创建 打开Qt Creator 界面选择 New Project或者选择菜单栏 【文件】-【新建文件或项目】菜单项 弹出New Project对话框&#xff0c;选择Qt Widgets Application&#xff0c; 选择【Choose】按钮&#xff0c;弹出如下对话框 设置项目名称和路径&#xf…

5分钟教你轻松搭建Web自动化测试框架

在程序员的世界中&#xff0c;一切重复性的工作&#xff0c;都应该通过程序自动执行。「自动化测试」就是一个最好的例子。 随着互联网应用开发周期越来越短&#xff0c;迭代速度越来越快&#xff0c;只会点点点&#xff0c;不懂开发的手工测试&#xff0c;已经无法满足如今的…

在网络攻击之前、期间和之后应采取的步骤

在当今复杂的威胁形势下&#xff0c;网络攻击是不可避免的。 恶意行为者变得越来越复杂&#xff0c;出于经济动机的攻击变得越来越普遍&#xff0c;并且每天都会发现新的恶意软件系列。 这使得对于各种规模和跨行业的组织来说&#xff0c;制定适当的攻击计划变得更加重要。 …

【Linux】指令详解(二)

目录 1. 前言2. 重新认识指令2.1 指令的本质2.1.1 which2.1.2 alias 3. 常见指令3.1 whoami3.2 cd3.2.1 cd -3.2.2 cd ~ 3.3 touch3.3.1 文件创建时间 3.4 stat3.5 mkdir3.5.1 创建一个目录3.5.2 创建路径 3.6 tree3.7 rm3.7.1 rm -f3.7.2 rm -r 3.8 man3.9 cp3.10 mv 1. 前言 …

【洛谷 P3743】kotori的设备 题解(二分答案+递归)

kotori的设备 题目背景 kotori 有 n n n 个可同时使用的设备。 题目描述 第 i i i 个设备每秒消耗 a i a_i ai​ 个单位能量。能量的使用是连续的&#xff0c;也就是说能量不是某时刻突然消耗的&#xff0c;而是匀速消耗。也就是说&#xff0c;对于任意实数&#xff0c;…

【Unity】万人同屏高级篇, 自定义BRGdots合批渲染,海量物体目标搜索

Unity万人同屏海量物体合批渲染 Unity万人同屏海量物体目标搜索 Unity万人同屏手机端测试&#xff0c;AOT和HybridCLR热更性能对比 博文开发测试环境&#xff1a; Unity&#xff1a;Unity 2022.3.10f1&#xff0c;URP 14.0.8&#xff0c;Burst 1.8.8&#xff0c;Jobs 0.70.0-p…

Spring Boot - 自定义注解来记录访问路径以及访问信息,并将记录存储到MySQL

1、准备阶段 application.properties&#xff1b;yml 可通过yaml<互转>properties spring.datasource.urljdbc:mysql://localhost:3306/study_annotate spring.datasource.usernameroot spring.datasource.password123321 spring.datasource.driver-class-namecom.mysq…

Mybatis系列之 parameterMap 弃用了

我 | 在这里 &#x1f575;️ 读书 | 长沙 ⭐软件工程 ⭐ 本科 &#x1f3e0; 工作 | 广州 ⭐ Java 全栈开发&#xff08;软件工程师&#xff09; &#x1f383; 爱好 | 研究技术、旅游、阅读、运动、喜欢流行歌曲 &#x1f3f7;️ 标签 | 男 自律狂人 目标明确 责任心强 ✈️公…