[PYthon] 字典

                  如题,这篇博客将带大家来学习Python中的字典~

             那么,是我们想象中的那种字典嘛?接下来跟着可莉去一探究竟吧~

                                     

                                 可莉将这篇文章收录在了:《Python》

                                 可莉推荐的优质博主主页:Keve ’ s blog

Python 中的字典(Dictionary)是一种非常强大且常用的数据结构,它提供了键-值对之间的映射

关系,能够高效地存储和查找数据。在本篇博客中,可莉将带大家将深入了解 Python 字典的特

性、用法和一些常见操作~


创建字典

a = { }
b = dict() //dict即代表着字典

上面相当于对字典进行了一个初始化,字典的创建依据以下规则:

键值对之间使用 , 分割, 键和值之间使用 : 分割

在初始化时添加键值对 :

student = { 'id': 1, 'name': 'zhangsan' }
print(student)

为了代码的美观和可读性,我们可以将代码书写风格改为如下:

student = {'id': 1,'name': 'zhangsan'
}

字典的特性

  1. 键的唯一性:字典中的键必须是唯一的,如果存在重复的键,则后面的键值对会覆盖前面的。
  2. 可变性:字典是可变的,可以动态地添加、删除或修改键值对。
  3. 无序性:字典中的键值对是无序的,即它们没有固定的顺序。

查找key

两种方法:① in  ,  ②  [ ]

in判定存在

student = {'id': 1,'name': 'zhangsan',
}print('id' in student)
print('score' in student)

运行结果为:
True

False 

通过 [ ] 获取

student = {'id': 1,'name': 'zhangsan',
}print(student['id'])
print(student['name'])

我们可以使用 [ ] ,通过类似于取下标的方式, 获取到元素的值. 只不过此处的 "下标" 是 key. (可能是整数, 也可能是字符串等其他类型),用key来获取valve。

不存在情况

student = {'id': 1,'name': 'zhangsan',
}print(student['noele'])
print(student['name'])

     

当试图去查找一个不存在的key值时会进行如上图的报错。

get() 方法

还有一种对于查找key的方法

my_dict = {'id': 1,
#'name': 'zhangsan',
}name = my_dict.get('name','unknow')
print(name)

获取键为 'name' 的值,如果键不存在返回默认值 'Unknown',“unknow”可以是其他元素,相当于形参可以修改。如果没有填“unknow”位置的参数时,当没有key时默认返回none。

新增/修改元素

进行新添和修改元素时一般是使用 [ ] 来进行操作。因为字典的底层原理相当于是哈希映射,所以在添加顺序上不需要去进行特意的插入。

新添元素实现代码如下:

student = {'id': 1,'name': 'zhangsan',
}student['score'] = 90
print(student)

修改元素:

当字典中已经存在key时对key进行操作

student = {'id': 1,'name': 'zhangsan','score': 80
}student['score'] = 90
print(student)

删除元素

我们一般使用pop 方法根据 key 删除对应的键值对:

student = {'id': 1,'name': 'zhangsan','score': 80
}student.pop('score')
print(student

遍历字典元素

student = {'id': 1,'name': 'zhangsan','score': 80
}for key in student:print(key, student[key])

取出所有 key 和 value

# 获取所有键
keys = my_dict.keys()# 获取所有值
values = my_dict.values()# 获取所有键值对
items = my_dict.items()

通过以上方法即可得到需要得到的值。

合法的key类型

因为字典的原理就是哈希表,所以我们所设置的key也必须是可哈希的。

print(hash(0))
print(hash(3.14))
print(hash('hello'))
print(hash(True))
print(hash(())) # ( ) 是一个空的元组

以上值均为可哈希的值,他们都有共同的特点,就是是固定的值不会改变,包括元组。

有可以作为key值的当然也有不能作为key值的:

  • 列表
  • 字典

如上两种类型都是可以改变的,我们可以通过一系列操作来改变列表和元组内部元素或键值对,所以他们作为可变的量导致他们无法作为字典中的key。

可莉敲黑板(小结)

字典也是一个常用的结构. 字典的所有操作都是围绕 key 来展开的。当遇到需要表示 "键值对映射"

这种场景时就可以考虑使用字典了~

下面是一个在底层实现方法上字典和列表所体现出来的一些差异~(来源于汤神)

 那么这篇博客到此结束啦~  大家下篇见!

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

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

相关文章

-转换流-

它是字节流和字符流之间转换的桥梁 转换流本身其实是字符流; 转换流的位置: 分为两个:字符转换输入流:InputStreamReader将InputStream转换为Reader字符转换输出流:OutputStreamWriter将Writer转换为OutputStream 作用…

4.2 Verilog 过程赋值

关键词:阻塞赋值,非阻塞赋值,并行 过程性赋值是在 initial 或 always 语句块里的赋值,赋值对象是寄存器、整数、实数等类型。 这些变量在被赋值后,其值将保持不变,直到重新被赋予新值。 连续性赋值总是处…

C++ 11新特性之可变参数模板

概述 随着C 11标准的发布,C语言获得了许多强大的新特性,其中一项显著提升灵活性和实用性的创新便是可变参数模板。这一特性极大地扩展了模板在处理不定数量类型或值参数时的能力,为开发者提供了更为强大且灵活的泛型编程工具。 工作机制 在C …

LeetCode Python - 6.Z字形变换

文章目录 题目答案运行结果 题目 将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 “PAYPALISHIRING” 行数为 3 时,排列如下: P A H N A P L S I I G Y I R 之后,你的输…

Qualcomm 蓝牙耳机 FAQ(41)---------Audio 问题分析之 ACAT Tools安装

大家好! 新的一年,在此祝大家:新年快乐!工作上步步高升!!龙年大吉!!! 也欢迎大家登录大大通平台,春节期间正常更新文章,期待你的到来&#xff0…

语义分割任务的准确率计算:基于PyTorch实现

语义分割任务的准确率计算:基于PyTorch实现 🌵文章目录🌵 🌳引言🌳🌳语义分割任务概述🌳🌳准确率的定义与计算方法🌳🌳实践应用与优化策略🌳&…

《Django+React前后端分离项目开发实战:爱计划》 03 理解项目结构

03 Understanding the Project Structure 《Django+React前后端分离项目开发实战:爱计划》 03 理解项目结构 Let’s look the project files created for us, Open the project folder backend in the code editor. 让我们看看为我们创建的项目文件,在代码编辑器中打开项目…

跟我学C++中级篇——函数模板的匹配

一、介绍和说明 在本文会尝试着把函数的重载以及模板自动推导等方法结合起来,一起分析模板函数的匹配的方式和原则。在普通的函数重载和普通的模板函数中,都比较容易理解调用哪一类,但在一些较为少用或者复杂的情况下,可能会发现…

《MySQL 简易速速上手小册》第7章:MySQL监控和日志分析(2024 最新版)

文章目录 7.1 配置和使用 MySQL 监控工具7.1.1 基础知识7.1.2 重点案例:使用 Python 和 Prometheus 监控 MySQL 性能7.1.3 拓展案例 1:自动化 MySQL 慢查询日志分析7.1.4 拓展案例 2:实时警报系统 7.2 解读 MySQL 日志文件7.2.1 基础知识7.2.…

使用django构建一个多级评论功能

,评论系统是交流和反馈的重要工具,尤其是多级评论系统,它允许用户回复特定评论,形成丰富的对话结构。这个文章是使用Django框架从零开始构建一个多级评论系统。Django是一个高级Python Web框架,它鼓励快速开发和干净、…

FastAPI使用异步motor实现对mongodb的增删改查

一、环境准备: 需要有mongodb和poetry以及Python3.10 二、克隆示例代码到本地 git clone gitgithub.com:waketzheng/fastapi_async_mongo_demo.git 三、安装依赖 cd fastapi_async_mongo_demo poetry shell poetry install 四、启动服务 python app/main.py …

Qt中程序发布及常见问题

1、引言 当我们写好一个程序时通常需要发布给用户使用,那么在Qt中程序又是如何实现发布的呢,这里我就来浅谈一下qt中如何发布程序,以及发布程序时的常见问题。 2、发布过程 2.1、切换为release模式 当我们写qt程序时默认是debug模式&#x…

ICCV 2023 | 8篇论文看扩散模型diffusion用于图像检测任务:动作检测、目标检测、异常检测、deepfake检测...

1、动作检测 DiffTAD: Temporal Action Detection with Proposal Denoising Diffusion 基于扩散方法提出一种新的时序动作检测(TAD)算法,简称DiffTAD。以随机时序proposals作为输入,可以在未修剪的长视频中准确生成动作proposals。…

【爬虫作业】python爬虫作业——爬取汽车之家

爬取汽车之家期末作业: 代码如下所示: import random import timeimport requests #发送网络请求 import parsel import csv # 1.发送网络请求 headers {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like G…

CVE-2012-2311 漏洞复现

CVE-2012-2311 这个漏洞被爆出来以后,PHP官方对其进行了修补,发布了新版本5.4.2及5.3.12,但这个修复是不完全的,可以被绕过,进而衍生出CVE-2012-2311漏洞。 PHP的修复方法是对-进行了检查: if(query_str…

动漫风博客介绍页面源码

动漫风博客介绍页面源码,HTML源码,图片背景有淡入切换特效 蓝奏云:https://wfr.lanzout.com/iIDZu1nrmjve

Go内存优化与垃圾收集

Go提供了自动化的内存管理机制,但在某些情况下需要更精细的微调从而避免发生OOM错误。本文介绍了如何通过微调GOGC和GOMEMLIMIT在性能和内存效率之间取得平衡,并尽量避免OOM的产生。原文: Memory Optimization and Garbage Collector Management in Go 本…

codeforces 1400分

文章目录 1.[B. Phoenix and Beauty](https://codeforces.com/problemset/problem/1348/B)2.[C. Rotation Matching](https://codeforces.com/problemset/problem/1365/C)3.[C. Element Extermination](https://codeforces.com/problemset/problem/1375/C)4.[D. Epic Transform…

Java编程构建高效二手交易平台

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

二、Mybatis相关概念

1.对象/关系数据库映射(ORM) ORM全称Object/Relation Mapping:表示对象-关系映射的缩写ORM完成面向对象的编程语言到关系数据库的映射。当ORM框架完成映射后,程序员既可以利用面向对象程序设计语言的简单易用性,又可以利用关系数…