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

python 之字典的相关知识

文章目录

      • 字典的基本特点:
        • 1. 定义
        • 2. 键唯一性
        • 3. 可变性
        • 4. 键的类型
      • 基本操作:
      • 字典的创建
      • 1. 花括号 `{}`
      • 2. dict() 构造函数
      • 3. 键值对的 dict() 构造函数
      • 使用 `zip()` 函数创建字典:
      • 注意事项
        • 访问字典中的值
        • 修改和添加键值对
        • 删除键值对
      • 字典方法:
      • 总结:
      • 1. `clear()`
      • 2. `copy()`
      • 3. `get()`
      • 4. `items()`
      • 5. `keys()`
      • 6. `values()`
      • 7. `pop()`
      • 8. `popitem()`
      • 9. `update()`

在这里插入图片描述

字典(Dictionary)是 Python 中的一种数据结构,它以键-值对的形式存储数据。字典是无序的,通过键来访问和存储数据,而不是通过索引。

字典的基本特点:

1. 定义

字典使用花括号 {} 定义,每个键值对之间使用逗号 , 分隔。键和值之间使用冒号 : 分隔。

my_dict = {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}
2. 键唯一性
  • 字典中的键是唯一的,不允许重复。如果出现重复键,后面的键值对会覆盖前面的。
my_dict = {'key1': 'value1', 'key1': 'new_value1'}
print(my_dict)  # 输出: {'key1': 'new_value1'}
3. 可变性
  • 字典是可变的,可以随时添加、删除或修改键值对。
4. 键的类型
  • 字典的键可以是不可变类型(如整数、字符串、元组等),但不能是可变类型(如列表、集合等)。

基本操作:

字典的创建

在 Python 中,有多种方法可以创建字典。以下是常用的创建字典的方式:

1. 花括号 {}

使用花括号 {} 来创建字典,键值对之间用冒号 : 分隔,每个键值对之间用逗号 , 分隔。

my_dict = {'name': 'Alice', 'age': 30, 'city': 'New York'}

2. dict() 构造函数

使用 dict() 构造函数来创建字典,可以从包含键值对的序列(如元组的列表)或者其他字典创建新字典。

  • 从包含键值对的序列创建:
my_dict = dict([('name', 'Alice'), ('age', 30), ('city', 'New York')])

3. 键值对的 dict() 构造函数

使用 dict() 构造函数并以关键字参数形式传递键值对。

my_dict = dict(name='Alice', age=30, city='New York')

对的,zip() 函数也可以用于创建字典。zip() 函数能够将多个可迭代对象打包成元组序列,并将其合并为一个字典。一般来说,zip() 会将第一个可迭代对象的元素作为键,第二个可迭代对象的元素作为值。

使用 zip() 函数创建字典:

keys = ['name', 'age', 'city']
values = ['Alice', 30, 'New York']my_dict = dict(zip(keys, values))
print(my_dict)  # 输出: {'name': 'Alice', 'age': 30, 'city': 'New York'}

这里,zip() 函数将 keysvalues 打包成元组序列,然后 dict() 函数将这些元组转换为字典。这种方法特别适合将两个列表的元素对应起来创建字典。

注意事项

  • 键必须是不可变类型(如整数、字符串、元组),但值可以是任意类型。
  • 如果使用相同的键创建字典,后面的键值对会覆盖之前的键值对。

以上是创建字典的几种常见方法,根据实际需求和数据类型,选择最适合的方法来创建字典。

访问字典中的值
my_dict = {'name': 'Alice', 'age': 30, 'city': 'New York'}print(my_dict['name'])  # 输出: 'Alice'
print(my_dict.get('age'))  # 输出: 30
修改和添加键值对
my_dict = {'name': 'Alice', 'age': 30, 'city': 'New York'}# 修改值
my_dict['age'] = 31# 添加新键值对
my_dict['gender'] = 'Female'
删除键值对
my_dict = {'name': 'Alice', 'age': 30, 'city': 'New York'}del my_dict['age']  # 删除 'age' 键值对my_dict.pop('city')  # 删除 'city' 键值对

字典方法:

  • keys():返回字典中所有键的视图。
  • values():返回字典中所有值的视图。
  • items():返回字典中所有键值对的元组视图。
  • update():将一个字典的键值对更新到另一个字典。
  • clear():清空字典中的所有元素。

总结:

字典是一种非常有用的数据结构,特别适合用于键值对的存储和快速检索。了解字典的特点、基本操作以及常用方法可以让你更好地利用它来组织和管理数据。

当操作 Python 字典时,可以使用多种方法来进行检索、添加、删除或修改键值对。下面是一些常用的字典方法以及它们的作用:

1. clear()

  • 作用:清空字典中的所有元素。

示例

my_dict = {'name': 'Alice', 'age': 30}
my_dict.clear()
print(my_dict)  # 输出: {}

2. copy()

  • 作用:返回字典的浅拷贝。

示例

my_dict = {'name': 'Alice', 'age': 30}
new_dict = my_dict.copy()

3. get()

  • 作用:获取指定键的值,如果键不存在则返回默认值。

示例

my_dict = {'name': 'Alice', 'age': 30}
print(my_dict.get('age'))  # 输出: 30
print(my_dict.get('gender', 'Not specified'))  # 输出: 'Not specified'

4. items()

  • 作用:返回一个包含所有键值对元组的视图。

示例

my_dict = {'name': 'Alice', 'age': 30}
print(my_dict.items())  # 输出: dict_items([('name', 'Alice'), ('age', 30)])

5. keys()

  • 作用:返回包含字典所有键的视图。

示例

my_dict = {'name': 'Alice', 'age': 30}
print(my_dict.keys())  # 输出: dict_keys(['name', 'age'])

6. values()

  • 作用:返回包含字典所有值的视图。

示例

my_dict = {'name': 'Alice', 'age': 30}
print(my_dict.values())  # 输出: dict_values(['Alice', 30])

7. pop()

  • 作用:删除指定键并返回其对应的值,如果键不存在则返回默认值。

示例

my_dict = {'name': 'Alice', 'age': 30}
value = my_dict.pop('age')
print(value)  # 输出: 30

8. popitem()

  • 作用:随机删除并返回一个键值对元组(通常是末尾键值对)。

示例

my_dict = {'name': 'Alice', 'age': 30}
item = my_dict.popitem()
print(item)  # 输出: ('age', 30)

9. update()

  • 作用:将一个字典的键值对更新到另一个字典。

示例

dict1 = {'name': 'Alice', 'age': 30}
dict2 = {'gender': 'Female'}dict1.update(dict2)
print(dict1)  # 输出: {'name': 'Alice', 'age': 30, 'gender': 'Female'}

这些方法能够让你对字典进行各种操作,包括获取键、值、键值对,删除元素,清空字典,以及合并字典等。

相关文章:

python 之字典的相关知识

文章目录 字典的基本特点:1. 定义2. 键唯一性3. 可变性4. 键的类型 基本操作:字典的创建1. 花括号 {}2. dict() 构造函数3. 键值对的 dict() 构造函数使用 zip() 函数创建字典:注意事项访问字典中的值修改和添加键值对删除键值对 字典方法&am…...

上下游系统对接的沟通与协作

在工作中,有时会有对接其他部门系统的需求,这种需求虽然不复杂,但是跨部门协作,往往会出现各种难以沟通、协调的情况。 踩的坑多了,就记录下来。 注意:在本文中,A系统调用B系统,A依…...

pytest 的使用===谨记

发现用例的规则 a) 文件test_.py开头和_test.py结尾 b) Test开头的类中test开头的方法(测试类不能带有__init__方法) c) 模块中test开头的函数(可以不在class中) 注意点: pytest是以方法为单位发现用例的,你…...

Qt 4.8.6 的下载与安装

Qt 4.8.6 的下载与安装 Qt 4.8.6 的下载与安装下载并解压 MinGW 4.8.2Qt4.8.6 库的安装Qt Creator 3.3.0 的安装配置 Qt Creator测试 官方博客:https://www.yafeilinux.com/ Qt开源社区:https://www.qter.org/ Qt 4.8.6 的下载与安装 学习《Qt Creato…...

图形推理 | 判断推理

文章目录 一、位置规律二、样式规律三、属性规律四、数量规律 一、位置规律 平移 方向:直线(上下、左右、斜对角线)、绕圈(顺逆时针)常见步数:恒定、递增(等差) 旋转 方向&#xff…...

npm的使用

package.json 快速生成package.json npm init -y “version”: “~1.1.0” 格式为:「主版本号. 次版本号. 修订号」。 修改主版本号是做了大的功能性的改动 修改次版本号是新增了新功能 修改修订号就是修复了一些bug dependencies "dependencies": {&…...

Web服务器实战

网站需求 1.基于域名www.openlab.com可以访问网站内容为 welcome to openlab!!! 2.给该公司创建三个网站目录分别显示学生信息,教学资料和缴费网站,基于www.openlab.com/student 网站访问学生信息,www.openlab.com/data网站访问教学资料 www…...

2021年电工杯数学建模B题光伏建筑一体化板块指数发展趋势分析及预测求解全过程论文及程序

2021年电工杯数学建模 B题 光伏建筑一体化板块指数发展趋势分析及预测 原题再现: 国家《第十四个五年规划和 2035 年远景目标纲要》中提出,将 2030 年实现“碳达峰”与 2060 年实现“碳中和”作为我国应对全球气候变暖的一个重要远景目标。光伏建筑一体…...

pandas教程:Essential Functionality 索引 过滤 映射 排序

文章目录 5.2 Essential Functionality(主要功能)1 Reindexing(重新索引)2 Dropping Entries from an Axis (按轴删除记录)3 Indexing, Selection, and Filtering(索引,选择,过滤)Selection with loc and i…...

pyspark连接mysql数据库报错

使用pyspark连接mysql数据库代码如下 spark_conf SparkConf().setAppName("MyApp").setMaster("local")spark SparkSession.builder.config(confspark_conf).getOrCreate()url "jdbc:mysql://localhost:3306/test?useUnicodetrue&characterE…...

HK WEB3 MONTH Polkadot Hong Kong 火热报名中!

HK Web3 Month 11月除了香港金融科技周外,HK Web3 Month又是一大盛事,从10月29日开始开幕直到11月18日结束。此次将齐聚世界各地的Web3产业从业者、开发者、社群成员和学生来参与本次盛会。除外,超过75位产业知名的讲者与超过50场工作坊将为…...

“第六十三天”

这两天怎么做的这么别扭,为什么我的vs 的strlen函数包括终止字符了; 哦哦,明白了,fgets函数读取在未达到指定字长,或者遇见空白符之前,会读取前面的所有字符,所以会读取换行符,而get…...

常用排序算法实现

时间复杂度 O ( 1 ) O(1) O(1) void func1(int n){int count 100;count; } void func2(int n){int count 100;for(int i 0; i < count;i){} } int func3(int n){return n; }O ( n ) O(n) O(n) void func1(int n){int count 100;for(int i 0; i < n;i){count;} …...

使用表单登录方法模拟登录通信人家园,要求发送登录请求后打印出来的用户名下的用户组类别

目标网站&#xff1a;https://www.txrjy.com/forum.php 一、进入网页&#xff0c;右键“检查” 二、输入用户名和密码&#xff0c;点击“登录”&#xff0c;点击“Network”,上划加载项找到蓝色框中的内容 三、点击第一个加载项&#xff0c;找到URL 四、相关代码&#xff1a; …...

Redis 的缓存击穿,穿透,雪崩及其解决方案

1 缓存穿透 什么是缓存穿透&#xff1f; 大量请求的 key 是不合理的&#xff0c;根本不存在于缓存中&#xff0c;也不存在于数据库中 。导致这些请求直接到了数据库上&#xff0c;根本没有经过缓存这一层&#xff0c;对数据库造成了巨大的压力&#xff0c;可能直接就被这么多…...

JWT原理分析——JWT

了解为什么会有JWT的出现&#xff1f; 首先不得不提到一个知识叫做跨域身份验证&#xff0c;JWT的出现就是为了更好的解决这个问题&#xff0c;但是在没有JWT的时候&#xff0c;我们一般怎么做呢&#xff1f;一般使用Cookie和Session&#xff0c;流程大体如下所示&#xff1a;…...

Jprofiler/ VisualVM 定位内存溢出OOM

下载,接受协议下一步下一步,最后选择与IDEA集成OK ej-technologies - Java APM, Java Profiler, Java Installer Builder IDEA配置参数: # F:\study\spring-test\dump 为dump文件保存路径-XX:HeapDumpOnOutOfMemoryError -XX:HeapDumpPathF:\study\spring-test\dumppackage …...

NOIP2023模拟13联测34 competition

题目大意 有一场题目数量为 m m m的比赛&#xff0c;有一个团队想要来参加。 这个团队有 n n n个选手&#xff0c;编号为 i i i的选手能做第 l i ∼ r i l_i \sim r_i li​∼ri​道题&#xff0c;每题他都有 100 % 100\% 100%的概率做出来。 这个团队会随机派出一只队伍来参…...

Intel oneAPI笔记(2)--jupyter官方文档(oneAPI_Intro)学习笔记

前言 本文是对jupyterlab中oneAPI_Essentials/01_oneAPI_Intro文档的学习记录&#xff0c;包含对SYCL、DPC extends SYCL、oneAPI Programming models等介绍和SYCL代码的初步演示等内容 oneAPI编程模型综述 oneAPI编程模型提供了一个全面而统一的开发人员工具组合&#xff0…...

用 QT 开发软件会吃官司吗?

之前我写过我们现在使用 QT 开发跨平台软件&#xff0c;有朋友留言&#xff0c;QT 虽好&#xff0c;当心收到律师函。今天就来聊聊这个话题。 在开始这个话题之前&#xff0c;我们先把使用盗版 QT 排除在外&#xff0c;只讨论在合法且遵从版权协议的前提下&#xff0c;能否使用…...

shell脚本--常见案例

1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件&#xff1a; 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

Cinnamon修改面板小工具图标

Cinnamon开始菜单-CSDN博客 设置模块都是做好的&#xff0c;比GNOME简单得多&#xff01; 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码&#xff1a;‘allure’ &#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;ڲ&#xfffd;&#xfffd;&#xfffd;&#xfffd;ⲿ&#xfffd;&#xfffd;&#xfffd;Ҳ&#xfffd;&#xfffd;&#xfffd;ǿ&#xfffd;&am…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机&#xff0c;它可以执行Java字节码。Java虚拟机是Java平台的一部分&#xff0c;Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...

【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看

文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...

BLEU评分:机器翻译质量评估的黄金标准

BLEU评分&#xff1a;机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域&#xff0c;衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标&#xff0c;自2002年由IBM的Kishore Papineni等人提出以来&#xff0c;…...