当前位置: 首页 > news >正文

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

相关文章:

Python编程技巧 – 使用字典

Python编程技巧 – 使用字典 Python Programming Skills – Using Dictionary Dictionary, 即字典&#xff0c;这是Python语言的一种重要的数据结构&#xff1b;Python字典是以键&#xff08;key&#xff09;值(value)对为元素&#xff0c;来存储数据的集合。 前文提到Python列…...

el-tree 与table表格联动

html部分 <div class"org-left"><el-input v-model"filterText" placeholder"" size"default" /><el-tree ref"treeRef" class"filter-tree" :data"treeData" :props"defaultProp…...

Leetcode刷题详解——删除并获得点数

1. 题目链接&#xff1a;740. 删除并获得点数 2. 题目描述&#xff1a; 给你一个整数数组 nums &#xff0c;你可以对它进行一些操作。 每次操作中&#xff0c;选择任意一个 nums[i] &#xff0c;删除它并获得 nums[i] 的点数。之后&#xff0c;你必须删除 所有 等于 nums[i] …...

HTTP四种请求方式,状态码,请求和响应报文

1.get请求 一般用于获取数据请求参数在URL后面请求参数的大小有限制 2.post请求 一般用于修改数据提交的数据在请求体中提交数据的大小没有限制 3.put请求 一般用于添加数据 4.delete请求 一般用于删除数据 5.一次完整的http请求过程 域名解析&#xff1a;使用DNS协议…...

Python - Wave2lip 环境配置与 Wave2lip x GFP-GAN 实战 [超详细!]

一.引言 前面介绍了 GFP-GAN 的原理与应用&#xff0c;其用于优化图像画质。本文关注另外一个相关的项目 Wave2lip&#xff0c;其可以通过人物视频与自定义音频进行适配&#xff0c;改变视频中人物的嘴型与音频对应。 二.Wave2Lip 简介 Wave2lip 研究 lip-syncing 以达到视频…...

2311rust,1.31版本更新

1.31.0稳定版 Rust1.31可能是最激动人心的版本! 使用Cargo创建一个新项目: cargo new foo以下是Cargo.toml的内容: [package] name "foo" version "0.1.0" authors ["名字"] edition "2018" //版本. [dependencies]在[package]…...

文心一言-情感关怀之旅

如何让LLM更有温度。 应用介绍...

下厨房网站月度最佳栏目菜谱数据获取及分析PLus

目录 概要 源数据获取 写Python代码爬取数据 Scala介绍与数据处理 1.Sacla介绍 2.Scala数据处理流程 数据可视化 最终大屏效果 小结 概要 本文的主题是获取下厨房网站月度最佳栏目近十年数据&#xff0c;最终进行数据清洗、处理后生成所需的数据库表&#xff0c;最终进…...

buildadmin+tp8表格操作(5)自定义组装搜索的查询

有时候我们会自定义组装一些数据&#xff0c;发送给后端&#xff0c;让后端来进行筛选&#xff0c;这里有一个示例 const onComSearchIdEq () > {// 展开公共搜索baTable.table.showComSearch true/*** 公共搜索表单赋值* 范围搜索有两个输入框&#xff0c;输入框绑定变量…...

企业级固态硬盘如何稳定运行?永铭固液混合铝电解电容来帮忙

企业级 固态硬盘 永铭固液混合铝电解电容 企业级固态硬盘&#xff08;SSD&#xff09;主要应用于互联网、云服务、金融和电信等客户的数据中心&#xff0c;企业级SSD具备更快传输速度、更大单盘容量、更高使用寿命以及更高的可靠性要求。 企业级固态硬盘的运行要求—固液混合电…...

【MISRA C 2012】Rule 4.2 不应该使用三连符

1. 规则1.1 原文1.2 分类 2. 关键描述3. 代码实例 1. 规则 1.1 原文 Rule 4.2 Trigraphs should not be used Category Advisory Analysis Decidable, Single Translation Unit Applies to C90, C99 1.2 分类 规则4.2&#xff1a;不应该使用三连符 Advisory建议类规范。 2…...

spring boot加mybatis puls实现,在新增/修改时,对某些字段进行处理,使用的@TableField()

1.先说场景&#xff0c;在对mysql数据库表数据插入或者更新时都得记录时间和用户id 传统实现有点繁琐&#xff0c;这里还可以封装一下公共方法。 2.解决方法&#xff1a; 2.1&#xff1a;使用aop切面编程&#xff08;记录一下&#xff0c;有时间再攻克&#xff09;。 2.2&…...

如何构建风险矩阵?3大注意事项

风险矩阵法&#xff08;RMA&#xff09;是确定威胁优先级别的最有效工具之一&#xff0c;可以帮助项目团队识别和评估项目中的风险&#xff0c;帮助项目团队对风险进行排序&#xff0c;清晰地展示风险的可能性和严重性&#xff0c;为项目团队制定风险管理策略提供依据。 如果没…...

SpringSecurity5|12.实现RememberMe 及 实现原理分析

security/day08 这个功能大家还熟悉么&#xff1f;我们在登录网站的时候&#xff0c;除了让你输入用户名和密码&#xff0c;还会有个勾选框&#xff1a; 记住我&#xff01;&#xff01;&#xff01;不是让大家记住我哈。 值得一提的是&#xff0c;Spring Security 也提供了这个…...

持续集成交付CICD:Jenkins Sharedlibrary 共享库

目录 一、理论 1.共享库 2.共享库配置 3.使用共享库 4.共享库扩展 二、实验 1.连接共享库 2.使用共享库 三、问题 1.路径报错 2.readJSON 报错 一、理论 1.共享库 &#xff08;1&#xff09;概念 1&#xff09;共享库这并不是一个全新的概念&#xff0c;其实在编…...

Linux--网络编程

一、网络编程概述1.进程间通信&#xff1a; 1&#xff09;进程间通信的方式有**&#xff1a;管道&#xff0c;消息队列&#xff0c;共享内存&#xff0c;信号&#xff0c;信号量这么集中 2&#xff09;特点&#xff1a;依赖于linux内核&#xff0c;基本是通过内核来实现应用层…...

数据结构 并查集

作用 快速的处理以下问题&#xff1a;【近乎O(1)的时间完成】 1.将两个集合合并 2.询问两个元素是否在一个集合中 用树的形式维护集合 基本原理 每一个集合用一棵树表示 每一个集合的编号就是根结点的编号&#xff0c;对于每一个结点&#xff0c;都存储其父结点&#xf…...

算法通关村第十六关黄金挑战——求滑动窗口中的最大值(滑动窗口与堆方法、双端队列法和直接比较法)

大家好&#xff0c;我是怒码少年小码。 今天这篇就讲一道题目&#xff0c;不难&#x1f60e;&#xff0c;但是一定要学会自己思考。 滑动窗口最大值 LeetCode 239&#xff1a;给你一个整数数组 nums&#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。…...

常见树种(贵州省):009楠木、樟木、桂木种类

摘要&#xff1a;本专栏树种介绍图片来源于PPBC中国植物图像库&#xff08;下附网址&#xff09;&#xff0c;本文整理仅做交流学习使用&#xff0c;同时便于查找&#xff0c;如有侵权请联系删除。 图片网址&#xff1a;PPBC中国植物图像库——最大的植物分类图片库 一、楠木 …...

全志H616开发版

开发板介绍&#xff1a; 二、开发板刷机 SDFormatter TF卡的格式化工具、Win32Diskimager 刷机工具 刷机镜像为&#xff1a;Orangepizero2_2.2.0_ubuntu_bionic_desktop_linux4.9.170.img 使用MobaXterm_Personal_20.3连接使用 网络配置&#xff1a;nmcli dev wifi 命令接入网…...

Python|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python&#xff5c;GIF 解析与构建&#xff08;5&#xff09;&#xff1a;手搓截屏和帧率控制 一、引言 二、技术实现&#xff1a;手搓截屏模块 2.1 核心原理 2.2 代码解析&#xff1a;ScreenshotData类 2.2.1 截图函数&#xff1a;capture_screen 三、技术实现&…...

Java 8 Stream API 入门到实践详解

一、告别 for 循环&#xff01; 传统痛点&#xff1a; Java 8 之前&#xff0c;集合操作离不开冗长的 for 循环和匿名类。例如&#xff0c;过滤列表中的偶数&#xff1a; List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...

1688商品列表API与其他数据源的对接思路

将1688商品列表API与其他数据源对接时&#xff0c;需结合业务场景设计数据流转链路&#xff0c;重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点&#xff1a; 一、核心对接场景与目标 商品数据同步 场景&#xff1a;将1688商品信息…...

dedecms 织梦自定义表单留言增加ajax验证码功能

增加ajax功能模块&#xff0c;用户不点击提交按钮&#xff0c;只要输入框失去焦点&#xff0c;就会提前提示验证码是否正确。 一&#xff0c;模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

基于数字孪生的水厂可视化平台建设:架构与实践

分享大纲&#xff1a; 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年&#xff0c;数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段&#xff0c;基于数字孪生的水厂可视化平台的…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要&#xff1a; 近期&#xff0c;在使用较新版本的OpenSSH客户端连接老旧SSH服务器时&#xff0c;会遇到 "no matching key exchange method found"​, "n…...

JavaScript 数据类型详解

JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型&#xff08;Primitive&#xff09; 和 对象类型&#xff08;Object&#xff09; 两大类&#xff0c;共 8 种&#xff08;ES11&#xff09;&#xff1a; 一、原始类型&#xff08;7种&#xff09; 1. undefined 定…...

Linux nano命令的基本使用

参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时&#xff0c;显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...

LOOI机器人的技术实现解析:从手势识别到边缘检测

LOOI机器人作为一款创新的AI硬件产品&#xff0c;通过将智能手机转变为具有情感交互能力的桌面机器人&#xff0c;展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家&#xff0c;我将全面解析LOOI的技术实现架构&#xff0c;特别是其手势识别、物体识别和环境…...