Python字典及用法详解

news2024/11/15 23:24:32

Python中的字典(Dictionary)是一种无序、可变的数据类型,用于存储键(Key)和值(Value)之间的映射关系。字典是一种高效的数据结构,可以用于快速查找和检索数据。

1.创建字典

可以使用大括号 {} 或者 dict() 函数来创建一个字典。字典中的键是唯一的,且必须是不可变的(如字符串、数字或元组),而值可以是任意类型的对象。

下面是创建字典的几种方式:

# 使用大括号创建空字典
 
my_dict = {}
 
 
 
# 使用大括号创建带有键值对的字典
 
my_dict = {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}
 
 
 
# 使用 dict() 函数创建带有键值对的字典
 
my_dict = dict(key1='value1', key2='value2', key3='value3')
 
 
 
# 从列表创建字典,列表中的元素是由键值对组成的元组
 
my_dict = dict([('key1', 'value1'), ('key2', 'value2'), ('key3', 'value3')])

2.访问字典中的值

可以使用方括号 [] 来访问字典中的值,将键作为索引传递给字典即可获取对应的值。

my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}
 
 
 
print(my_dict['name'])  # 输出: Alice
 
print(my_dict['age'])   # 输出: 25
 
print(my_dict['city'])  # 输出: New York


如果访问不存在的键,会触发 KeyError 异常。可以使用 get() 方法来避免异常,如果键不存在,get() 方法会返回指定的默认值。

my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}
 
 
 
print(my_dict.get('name'))         # 输出: Alice
 
print(my_dict.get('gender', 'N/A')) # 输出: N/A,键'gender'不存在,返回默认值'N/A'


3.修改字典

字典中的值是可变的,可以通过键来修改字典中的值。

my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}
 
 
 
my_dict['age'] = 26  # 修改键'age'对应的值为26
 
print(my_dict)      # 输出: {'name': 'Alice', 'age': 26, 'city': 'New York'}


如果键不存在,赋值操作会创建一个新的键值对。

my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}
 
 
 
my_dict['gender'] = 'female'  # 键'gender'不存在,创建新的键值对
 
print(my_dict)               # 输出: {'name': 'Alice', 'age': 25, 'city': 'New York', 'gendder': 'female'}


4.删除字典元素

可以使用 del 关键字来删除字典中的元素,通过指定要删除的键来完成删除操作。

my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}
 
 
 
del my_dict['age']  # 删除键'age'及其对应的值
 
print(my_dict)     # 输出: {'name': 'Alice', 'city': 'New York'}


如果尝试删除不存在的键,会触发 KeyError 异常。可以使用 pop() 方法来删除键,并返回对应的值,如果键不存在,pop() 方法会返回指定的默认值。

my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}
 
 
 
removed_age = my_dict.pop('age')  # 删除键'age'及其对应的值,并返回被删除的值
 
print(my_dict)                   # 输出: {'name': 'Alice', 'city': 'New York'}
 
print(removed_age)               # 输出: 25
 
 
 
removed_gender = my_dict.pop('gender', 'N/A')  # 键'gender'不存在,返回默认值'N/A'
 
print(removed_gender)                          # 输出: N/A
 
还可以使用 popitem() 方法删除字典中的最后一个键值对,并返回被删除的键值对。
 
 
 
my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}
 
 
 
removed_item = my_dict.popitem()  # 删除最后一个键值对,并返回被删除的键值对
 
print(my_dict)                    # 输出: {'name': 'Alice', 'age': 25}
 
print(removed_item)               # 输出: ('city', 'New York')

5.字典的常用操作

遍历字典

可以使用 for 循环遍历字典的键或值,或者同时遍历键和值。

遍历键:

my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}
 
 
 
for key in my_dict:
 
    print(key)  # 输出: name, age, city


遍历值:

my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}
 
 
 
for value in my_dict.values():
 
    print(value)  # 输出: Alice, 25, New York


遍历键和值:

my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}
 
 
 
for key, value in my_dict.items():
 
    print(key, value)  # 输出: name Alice, age 25, city New York


6.检查键是否存在

可以使用 in 关键字来检查某个键是否存在于字典中。

my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}
 
 
 
print('name' in my_dict)     # 输出: True
 
print('gender' in my_dict)   # 输出: False


7.获取字典长度

在Python中,可以使用len()函数来获取字典的长度,即键值对的数量。以下是使用示例:

my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}
 
length = len(my_dict)
 
print(length)  # 输出: 3


在上述示例中,len(my_dict)返回字典my_dict中键值对的数量,即3。

字典的常用方法

除了上述提到的 get()、pop()、popitem() 方法外,字典还提供了其他常用方法:

1.clear(): 清空字典中的所有键值对。

my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}
 
my_dict.clear()
 
print(my_dict)  # 输出: {}


2.copy(): 创建字典的副本(浅拷贝)。

my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}
 
new_dict = my_dict.copy()
 
print(new_dict)  # 输出: {'name': 'Alice', 'age': 25, 'city': 'New York'}


3.update(): 将一个字典的键值对更新到另一个字典中。

my_dict = {'name': 'Alice', 'age': 25}
 
new_data = {'city': 'New York', 'gender': 'female'}
 
my_dict.update(new_data)
 
print(my_dict)  # 输出: {'name': 'Alice', 'age': 25, 'city': 'New York', 'gender': 'female'}


4.keys(): 返回一个包含字典所有键的视图(类似于列表)。

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


5.values(): 返回一个包含字典所有值的视图(类似于列表)。

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


6.items(): 返回一个包含字典所有键值对的视图(类似于列表中的元组)。

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


这些方法提供了字典常用的操作,可以根据需要选择使用。

除了内置的字典方法,还可以使用条件语句、循环等结构来处理字典,以实现更复杂的操作。

当处理字典时,可以使用条件语句(如if语句)和循环结构(如for循环)来执行不同的操作。下面是一些示例:

1.使用条件语句处理字典

可以使用条件语句来检查字典中的特定键是否存在,或根据键值对的值执行不同的操作。

my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}
 
 
 
# 检查键是否存在
 
if 'name' in my_dict:
 
    print("Name:", my_dict['name'])
 
else:
 
    print("Name not found")
 
 
 
# 根据值执行不同操作
 
if my_dict['age'] >= 18:
 
    print("Adult")
 
else:
 
    print("Minor")

在上述示例中,首先使用条件语句检查键'name'是否存在于字典中,然后根据键值对的值判断一个人是否成年。

2.使用循环处理字典

可以使用循环结构遍历字典的键、值或键值对,并执行相应的操作。

my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}
 
 
 
# 遍历键
 
for key in my_dict:
 
    print("Key:", key)
 
 
 
# 遍历值
 
for value in my_dict.values():
 
    print("Value:", value)
 
 
 
# 遍历键值对
 
for key, value in my_dict.items():
 
    print("Key:", key, "Value:", value)

在上述示例中,分别使用循环遍历字典的键、值和键值对,并打印相应的信息。

除了常规的for循环外,还可以使用字典推导式来处理字典。

my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}
# 使用字典推导式创建新字典
 
new_dict = {key: value for key, value in my_dict.items() if key != 'age'}
 
print(new_dict)


在上述示例中,使用字典推导式创建了一个新字典new_dict,其中排除了键为'age'的键值对。

这些是使用条件语句、循环等结构处理字典的一些常见方法,可以根据具体需求进行调整和扩展。

 

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

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

相关文章

MobileViT详解:轻型,通用,移动友好的视觉变压器

MobileViT详解:轻型,通用,移动友好的视觉变压器 0. 引言1. 网络结构2. 模型详解2.1 MobileViT Block2.1.1 Local representations2.1.2 Transformers as Convolutions (global representations)2.1.3 Fusion 2.2 MV2 3. 简化版理解4. 总结 0.…

Ubuntu系统搭建FTP服务器

Ubuntu 系统版本:Ubuntu 22.04.2 LTS 安装 vsftpd 软件包 sudo apt-get update sudo apt-get install vsftpd查看版本,验证是否安装成功:vsftpd -v 配置文件 以下是我翻译后的默认配置文件(地址 /etc/vsftpd.conf)&a…

[NOI2009] 描边

题目描述 小 Z 是一位杰出的数学家。聪明的他特别喜欢研究一些数学小问题。 有一天,他在一张纸上选择了 n 个点,并用铅笔将它们两两连接起来,构成 (�−1)22n(n−1)​ 条线段。由于铅笔很细,可以认为这些线段的宽度为…

ROS:参数的使用与编程方法

目录 一、参数模型二、 创建功能包三、参数命令行的使用(rosparam)四、使用程序来使用参数(C)4.1创建代码4.2编译4.3运行 一、参数模型 在ROS Master中,存在一个参数服务器(Parameter Server),它是一个全局…

Python高光谱遥感数据处理与机器学习实践技术丨Matlab高光谱遥感数据处理与混合像元分解

目录 Python高光谱遥感数据处理与机器学习实践技术 第一章 高光谱基础 第二章 高光谱开发基础(Python) 第三章 高光谱机器学习技术(python) 第四章 典型案例操作实践 Matlab 高光谱遥感数据处理与混合像元分解 第一章 理论…

java SSM 互助旅游管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM 互助旅游管理系统是一套完善的web设计系统(系统采用SSM框架进行设计开发,springspringMVCmybatis),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采…

预制菜进击万亿市场,谁能更快上桌“吃菜”?

文 | 螳螂观察 作者 | 图霖 消费行业很少有可持续的风口,这两年的预制菜算其中一个。 艾媒咨询发布的行业预测显示,2026年我国预制菜市场规模有望达到10720亿元。 过去这一年,武汉、大同等地已相继召开了预制菜相关的产业峰会。峰会规模有…

gismo-3维IGA

文章目录 前言一、简单示例二、gismo-3维IGA3维程序中的几何模型 三、xml文件的理解1、xml文件示例2、gismo中二维示例文件-一个曲面(简单) 四、三维程序中xml文件的理解三维几何模型边界信息 五、三维程序运行细化四次细化5次 总结 #pic_center 前言 只…

C#读写FDX-B ISO11784/85协议动物标签源码

一个FDX-B ISO11784/85协议动物标签内包括了以下信息: 11位的前导码;38位的SN序号;10位国家代码;1位data block标识;14位保留位;1位Animal动物标识;以上64位数据的crc16ccitt校验码&#xff0c…

短视频矩阵源码系统打包.源码

Masayl是一款基于区块链技术的去中心化应用程序开发平台,可帮助开发者快速、便捷地创建去中心化应用程序。Masayl拥有丰富的API和SDK,为开发者们提供了支持。此外,Masayl还采用了高效的智能合约技术,确保应用程序的稳定、安全和高…

项目集管理—项目集治理

一、概述 项目集治理是实现和执行项目集决策,为支持项目集而制定实践,并维持项目集监督的绩效领域。 本章包括: 项目集治理实践项目集治理角色项目集治理设计与实施 项目集治理包括为了满足组织战略和运营目标的要求,对项目集实…

【虹科案例】虹科数字化仪在激光雷达大气研究中的应用

01 莱布尼茨研究所使用激光雷达进行大气研究 图 1:在 Khlungsborn 的 IAP 办公室测试各种激光器 大气研究使用脉冲激光束通过测量大气中 100 公里高度的多普勒频移和反向散射光来测量沿光束的温度和风速。返回的光信号非常微弱,会被阳光阻挡&#xff0c…

90后的心声:都别卷了,上年纪了真的卷不动.....

内卷,是现在热度非常高的一个词汇,随着热度不断攀升,隐隐到了“万物皆可卷”的程度。 内卷的来源 内卷最早的“出处”是几张名校学霸的图片。 大学生们刷爆朋友圈的几张“内卷”图片是这样的:有的人骑在自行车上看书&#xff0c…

如何处理亿级图片排重(精准排重,相似排重)

图片相似度对比 1、需求 假如有一个图片池,存有1亿图片。给一张目标图片,在图片池中做匹配。 判断一张图片是否在图片池中出现过。(完全一样)判断有没有相似的出现过。比如两张图相似度90,两张图片是在描述一件事情。 …

系统架构师之高内聚低耦合

一、概念: 标记耦合(Stamp Coupling)和数据耦合(Data Coupling)是软件设计中两种不同的耦合类型,它们之间的区别如下: 标记耦合:标记耦合是指模块之间通过参数传递标记或标识符来进…

对安装Linux的服务器进行缓存清除

安装Linux的服务器缓存过高导致服务器运行速度慢 第一步,查看当前服务器中Linux系统的状态。 命令:free -h 第二步:备份内存缓冲区中的数据到磁盘中。 命令:sync 在大多数情况下,不需要手动使用sync命令&#xff0…

跨境电商如何进行仓储物流管理?

跨境电商如何进行仓储物流管理? 01跨境电商仓储物流管理痛点在哪? 供应链不稳定:因为要涉及多个国家的生产和供应环节,跨境物流的过程中还需要遵守目的地国家和货物品类的规定,这会增加仓储和物流成本,并…

创新需求:台灯加装语音识别芯片,打造智能化生活方式

为了满足人们对于智能化生活的需求,现在有一种创新的需求——为台灯加装语音识别芯片,从而实现远程控制、语音操控等更为智能的功能。 科技行业的快速发展,使得语音识别芯片也越来越普及。它们可以使电子产品具有智能化、人性化的交互方式。…

【Java系列】MyBatis-Plus常见面试题

问题列表 Q1:MyBatis-Plus是什么?它有什么优点? MyBatis-Plus是MyBatis框架的一个扩展库,它提供了一系列方便的API和工具,可以简化常见的数据库操作。MyBatis-Plus的优点包括: 提高开发效率:My…

第1章:SpringMVC简介

一、SpringMVC 1.Java语言学习流程 2.SpringMVC的主要内容 二、SpringMVC简介 1.什么是MVC MVC是一种软件架构的思想,将软件按照模型,视图,控制器划分M:Model,模型层,指工程中的JavaBean,作用…