Python教程(11)——Python中的字典dict的用法介绍

dict的用法介绍

    • 创建字典
    • 访问字典
    • 修改字典
    • 删除字典
    • 字典的相关函数

列表虽然好,但是如果需要快速的数据查找,就必须进行需要遍历,也就是最坏情况需要遍历完一遍才能找到需要的那个数据,时间复杂度是O(n),显然这个速度是很难接受的,于是就必须要有新的数据结构出现,于是字典就诞生了!

在Python中,字典(Dictionary)是一种无序的数据结构,用于存储键值对(key-value)。字典中的每个元素由一个键(key)和一个对应的值(value)组成,键和值之间使用冒号(:)进行分隔,每个键值对之间使用逗号(,)进行分隔。字典中的键必须是唯一的,而值可以是任意类型的对象。有点类似C++语言中的映射,时间复杂度是O(1)。

Python中的字典主要有以下一些特点:

  • 无序性:字典中的元素没有固定的顺序,不能通过索引来访问元素。
  • 可变性:可以向字典中添加、修改或删除元素。
  • 唯一键:字典中的键必须是唯一的,如果添加了相同的键,则后面的键值对会覆盖前面的键值对。

在这里插入图片描述

创建字典

很显然,使用字典之前需要先创建。在Python中,可以使用花括号 {} 或者 dict() 函数来创建字典。字典由键值对组成,每个键值对之间使用逗号 , 分隔。键和值之间使用冒号 : 分隔。以下是几种创建字典的方式示例:

  1. 使用花括号 {} 创建字典:
# 创建一个空字典
my_dict = {}
# 创建一个包含键值对的字典
my_dict = {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}
  1. 使用 dict() 函数创建字典:
# 创建一个空字典
my_dict = dict()
# 创建一个包含键值对的字典
my_dict = dict(key1='value1', key2='value2', key3='value3')
# 使用列表或元组创建字典
my_dict = dict([('key1', 'value1'), ('key2', 'value2'), ('key3', 'value3')])
  1. 使用字典推导式创建字典:
# 创建一个包含键值对的字典
my_dict = {key: value for key, value in [('key1', 'value1'), ('key2', 'value2'), ('key3', 'value3')]}
print(my_dict)

上面的第三种写法可能不少同学不容易理解,大家可以先记住就行,后面的教程我们会讲到。

访问字典

创建字典,我们肯定需要进行访问,不然创建的就没什么意义了。在Python中,可以通过键来访问字典中的值。以下是几种常见的访问字典的方式:

  1. 利用方括号和键的方式,可以直接访问字典中对应键的值。
person = {"name": "John", "age": 25, "city": "New York"}
print(person["name"])  # 输出: John
  1. 使用get()方法访问值,get()方法可以根据给定的键来获取对应的值,如果键不存在,会返回None
person = {"name": "John", "age": 25, "city": "New York"}
print(person.get("name"))  # 输出: John
  1. 使用keys()方法遍历所有键,keys()方法返回一个包含字典所有键的迭代器,可以用于遍历所有键。
person = {"name": "John", "age": 25, "city": "New York"}
for key in person.keys():
   print(key)  # 输出: name, age, city
  1. 使用values()方法遍历所有值,values()方法返回一个包含字典所有值的迭代器,可以用于遍历所有值。
person = {"name": "John", "age": 25, "city": "New York"}
for value in person.values():
   print(value)  # 输出: John, 25, New York
  1. 使用items()方法遍历所有键值对,items()方法返回一个包含字典所有键值对的迭代器,可以用于遍历所有键值对。
person = {"name": "John", "age": 25, "city": "New York"}
for key, value in person.items():
   print(key, value)  # 输出: name John, age 25, city New York

以上这些方式都是一些访问字典的常用方法,你可以根据具体需求来访问字典中的数据。如果键不存在,使用方括号的方式会引发KeyError异常,而get()方法会返回None,需要在代码中做好判断。因此,根据实际情况选择合适的访问方式是很重要的。

修改字典

修改字典,主要就是修改字典中的元素。在Python中,可以通过以下方式修改字典中的值:

  1. 通过键直接赋值修改值,利用方括号和键的方式,可以直接通过赋值操作修改字典中对应键的值。
person = {"name": "John", "age": 25, "city": "New York"}
person["name"] = "Tom"
print(person)  # 输出: {"name": "Tom", "age": 25, "city": "New York"}
  1. 使用update()方法批量修改键值对,update()方法接受一个字典作为参数,用于同时修改多个键值对。
person = {"name": "John", "age": 25, "city": "New York"}
person.update({"name": "Tom", "age": 30})
print(person)  # 输出: {"name": "Tom", "age": 30, "city": "New York"}
  1. 使用setdefault()方法修改值或添加新键值对,setdefault()方法接受两个参数,第一个参数为要设置的键,第二个参数为默认值。如果键存在,则返回对应的值;如果键不存在,则设置该键的值为默认值,并返回默认值。
person = {"name": "John", "age": 25}
person.setdefault("city", "New York")
print(person)  # 输出: {"name": "John", "age": 25, "city": "New York"}

person.setdefault("country", "USA")
print(person)  # 输出: {"name": "John", "age": 25, "city": "New York", "country": "USA"}

以上的这些方法都是可以修改字典的,你可以根据具体需求来修改字典中的值。如果键不存在,则新增键值对;如果键存在,则修改对应的值。记住,字典中的键必须是唯一的,如果重复使用相同的键,则后面的值会覆盖前面的值。

删除字典

在Python中,可以通过以下方式删除字典或字典中的元素:

  1. 使用del语句删除字典或字典中的键值对,使用del语句后跟字典名和要删除的键,可以删除字典中的键值对。如果使用del语句后跟字典名,则会删除整个字典。
person = {"name": "John", "age": 25, "city": "New York"}
del person["age"]  # 删除键为"age"的键值对
print(person)  # 输出: {"name": "John", "city": "New York"}

del person  # 删除整个字典
  1. 使用pop()方法删除指定键的键值对并返回其值,pop()方法接受一个键作为参数,用于删除字典中指定键的键值对,并返回该键对应的值。
person = {"name": "John", "age": 25, "city": "New York"}
age = person.pop("age")  # 删除键为"age"的键值对并返回值
print(person)  # 输出: {"name": "John", "city": "New York"}
print(age)  # 输出: 25

3 使用clear()方法清空字典中的所有键值对,clear()方法用于移除字典中的所有元素,使字典变为空字典。

person = {"name": "John", "age": 25, "city": "New York"}
person.clear()  # 清空字典
print(person)  # 输出: {}

字典的相关函数

以下是整理的一些关于字典的相关函数,这些方法可用于对字典进行各种操作,如获取值、添加键值对、删除键值对等。如果有错误的,欢迎大家指出。

函数名解释
clear()移除字典中的所有元素。
copy()返回字典的浅复制副本。
fromkeys(seq[, value])创建一个新字典,使用指定的键和每个键对应的值。
get(key[, default])返回字典中指定键的值。如果键不存在,则返回默认值。
items()返回字典中所有键值对的元组视图。
keys()返回字典中所有键的视图。
pop(key[, default])弹出并返回字典中指定键的值。如果键不存在,则返回默认值。
popitem()弹出并返回字典中的一对键值。
setdefault(key[, default])返回字典中指定键的值。如果键不存在,则在字典中添加键并返回默认值。
update([other])将其他字典或键值对更新到字典中。
values()返回字典中所有值的视图。

更多精彩内容,请关注同名公众:一点sir(alittle-sir)

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

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

相关文章

14:00面试,14:06就出来了,问的问题有点变态

从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到8月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40%,…

SpringBoot初级开发--多环境配置的集成(9)

在Springboot的开发中,我们经常要切换各种各样的环境配置,比如现在是开发环境,然后又切换到生产环境,这个时候用多环境配置就是一个明智的选择。接下来我们沿用上一章的工程来配置多环境配置工程。 1.准备多环境配置文件 这里我…

从零学算法(剑指 Offer 36)

123.输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。 为了让您更好地理解问题,以下面的二叉搜索树为例: 我们希望将这个二叉搜索树转化为双向循环链表。…

ITMS介绍

ITMS(Integrated Terminal Management System),终端综合管理系统。 主要用于家庭网关的设备注册,初始化自动配置,软件版本升级,远程故障诊断修复和设备监控等。它通过北向连接服开系统用于接收业务工单&am…

servlet初体验之环境搭建!!!

我们需要用到tomcat服务器,咩有下载的小伙伴看过来:如何正确下载tomcat???_明天更新的博客-CSDN博客 1. 创建普通的Java项目,并在项目中创建libs目录存放第三方的jar包。 建立普通项目 创建libs目录存放第三…

数据是如何存储在内存中的?听我慢慢道来

数据的存储 1. 前言2. 数据类型2.1 整形家族2.2 浮点数家族2.3 构造类型(自定义类型)2.4 指针类型2.5 空类型(无类型) 3. 整数在内存中的存储4. 大小端5. 浮点数在内存中的存储 1. 前言 大家好,我是努力学习游泳的鱼。…

软考:中级软件设计师:信息系统的安全属性,对称加密和非对称加密,信息摘要,数字签名技术,数字信封与PGP

软考:中级软件设计师:信息系统的安全属性 提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学习和总结,以应对未来更多的可能性 关于互联网大厂的笔试面试,都是需要细心准…

软考:中级软件设计师:数据库恢复与备份,故障与恢复,反规范化

软考:中级软件设计师:数据库恢复与备份 提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学习和总结,以应对未来更多的可能性 关于互联网大厂的笔试面试,都是需要细心准备…

RunnerGo:轻量级、全栈式、易用性和高效性的测试工具

随着软件测试的重要性日益凸显,市场上的测试工具也日益丰富。RunnerGo作为一款基于Go语言研发的开源测试平台,以其轻量级、全栈式、易用性和高效性的特点,在测试工具市场中逐渐脱颖而出。 RunnerGo是一款轻量级的测试工具,使用Go…

关于Linux系统时间的问题

关于Linux系统时间的问题 当我们进行一些特定的业务需求时,需要修改当前Linux系统的系统时间。我们可以用以下命令进行修改时间。 data -s "2022-08-31 15:00:00"当我们将时间设置为某个时间点后,Linux系统的时间会出现一个问题:…

ELK安装、部署、调试(三)zookeeper安装,配置

1.准备 java安装,系统自带即可 2.下载zookeeper zookeeper.apache.org上可以下载 tar -zxvf apache-zookeeper-3.7.1-bin.tar.gz -C /usr/local mv apache-zookeeper-3.7.1-bin zookeeper 3.配置zookeeper mv zoo_sample.cfg zoo.cfg /usr/local/zookeeper/con…

您的账号已停用:Google谷歌账号被停用,如何解封?附最新保姆级教程

有个兄弟的谷歌账号最近被停用,或者说被封了。 以此为例,教下大家如何解封。 先来解释下账号为什么会被停用? 这里面可能有三种情况: 1、使用的代理节点频繁切换,或者你用的代理节点被过多人使用,其它人也可…

【牛客网题目】反转链表

目录 描述 解题分析 描述 给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。 数据范围: 0≤n≤1000 要求:空间复杂度O(1) &a…

【校招VIP】java语言考点之多线程NIO

考点介绍 多线程&NIO考点是校招面试中的常制点之一。 Java NIO是new IO的简称,是一种可以替代Java 10的一套新的IO机制。它提供了一套不同于Java标准1O的操作机制,严格来说,NIO与并发并无直接关系,但是使用NIO技术可以大大提高…

燃气管网监测系统,24小时守护燃气安全

随着社会的发展和人民生活水平的提高,燃气逐渐成为人们日常生活和工作中不可或缺的一部分。然而,近年来,屡屡发生的燃气爆炸问题,也让人们不禁对燃气的安全性产生了担忧。因此,建立一个高效、实时、准确的燃气管网监测…

PVE 8.0.4 配置记录

前言 七夕收到了媳妇送的礼物 Beelink SER 5 PRO (Ryzen 5700U), 记录打造成私人服务器的过程. 下载安装 Proxmox 8.0.4 https://www.proxmox.com/en/downloads 安装过程中修改磁盘设置: swap 分区设置为物理内存的 2 倍, 防止虚机太多内存不足 root 最大设置为 32 GB, 多了…

Win7系统电脑开机总出现硬盘自检的简单解决方法

你是不是经常会遇到电脑开机进行硬盘自检,而且每次开机都检查很久不能跳过;怎么才能跳过这一步骤呢?下面教大家如何让Win7系统电脑在开机的时候跳过硬盘自检这一步骤,加快开机时间。 解决步骤: 1、按下“Win R”快捷键…

Docker容器学习:搭建自己专属的LAMP环境

目录 编写Dockerfile 1.文件内容需求: 2.值得注意的是centos6官方源已下线,所以需要切换centos-vault源! 3.Dockerfile内容 4.进入到 lamp 开始构建镜像 推送镜像到私有仓库 1.把要上传的镜像打上合适的标签 2.登录harbor仓库 3.上传镜…

正中优配:A股早盘三大股指微涨 华为概念表现活跃

周三(8月30日),到上午收盘,三大股指团体收涨。其间上证指数涨0.06%,报3137.72点;深证成指和创业板指别离涨0.33%、0.12%;沪深两市合计成交额6423.91亿元,总体来看,两市个…

动态场景建图 Removert(offline) 和 DynamicFilter(online)前端部分对比

1.Removert 简单来说2020年的REMOVERT是针对动态环境下的建图进行优化的一篇很好的作品。 针对的主要问题:若是采用点云特征进行匹配的话,动态障碍物在预处理阶段也会被剔除。那么,另一个方面,动态障碍物对点云地图的构建的影响在…