Python字典及用法详解

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'])  # 输出: Aliceprint(my_dict['age'])   # 输出: 25print(my_dict['city'])  # 输出: New York


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

my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}print(my_dict.get('name'))         # 输出: Aliceprint(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'对应的值为26print(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)               # 输出: 25removed_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)     # 输出: Trueprint('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://xiahunao.cn/news/352236.html

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

相关文章

人事项目开发记录-登录模块

人事项目开发记录 后端接口实现 后端接口实现 后端权限认证采用Spring Security实现(本小节中大量知识点与第10章的内容相关,需要读者熟练掌握第10章的内容),数据库访问使用MyBatis,同时使用Redis实现认证信息缓存。因…

Alertmanager的pod如何添加标签(label)

在Alertmanager.spec.podMetadata字段下添加,如下图:

蘑菇街购物商城

P148-P151 项目创建 项目我用脚手架3创建:vue creat supermall (这个项目名字是supermall)后面配置直接选Babel 运行项目:npm run serve(因为我们观察创建好的项目的初始文件目录,没有config,说明这个使用脚手架3创建的,可以去查…

蘑菇街服务器信息,蘑菇街开放平台

一、授权方式 为保证用户数据的安全性,若您的应用已完成与蘑菇街开放平台对接,需要获取一些与用户紧密相关的信息(如订单、商品、促销等),需要征得用户的同意,获得用户的授权许可。蘑菇街开放平台采用国际通用的OAuth2.0标准协议&…

仿蘑菇街界面(2)

上一篇博客,博客地址http://blog.csdn.net/itbailei/article/details/38561297把基本的主界面框架已经搭建完毕,我们采用的基本框架为fragment进行页面之间的切换,底部菜单采用的是RadioButton。今天我们来重点来仿照一下第一个底部菜单“爱逛…

仿蘑菇街界面应用(1)

看到郭霖大神仿微信主界面的博客,在佩服大神文笔犀利、讲解详尽、代码风骚之余,也想在上班无所事事时,找点有意思的东西玩玩,蘑菇街作为中国最大女性购物社区,其APP的设计水平也毋庸置疑的,最近博客将连续来…

实现蘑菇街首页效果

打算出一个系列,专治现在市面上各种app的各种滑动不服系列,解决各种滑动冲突问题,现在已经发现了9种样式,打算一个一个一一破解,这是第一篇。 今天给大家带来的是高仿蘑菇街的首页,现在这种页面的格式很流…

设备指纹系列--基础篇

基础概念 618还没开始,但是又好像已经结束了…在这种电商大促的大节日前,电商行业客户一般会提前找到合适的设备指纹产品,去防止被“薅秃”。因为,黑灰产拥有专业的设备牧场,通过使用模拟器、刷机改机等手段&#xff…

仿蘑菇街个人主页

效果图: 看到效果图,第一想到的大致布局是一个scrollview嵌套一个viewpage,viewpage里面有一两个fragment或者写成一个fragment。但是fragment肯定包含两个布局,一个是含有图片(gridview)的listview,另一个布局是只含有…

App竞品分析报告:美丽说VS蘑菇街

1.产品概况 iOS App Store中国区iPhone免费-生活类排名(最近3个月) 数据来源:ann9.com 蘑菇街排名基本稳定在Top 10至20之间,美丽说在8月下旬后基本游离在Top 30外。 2015年6月活跃用户数比对-iOS端 数据说明:MAU为月…

社会化购物:Pinterest,Fancy还是美丽说,蘑菇街?

转自:网站分析在中国 原文地址:http://www.chinawebanalytics.cn/social-shopping-pinterest-or-fancy/ 【每期一句】越强烈的网络效应,越接近成功。 【前言】这篇文章是应 的邀请所做。很高兴能有机会与几年前一样,分析一个细分行…

仿蘑菇街项目

引言 仿蘑菇街的Vue.js项目是我学习vue.js做的第一个项目,今天来重温一下项目实现的功能,记录一下,方便以后查看。首先需要创建项目,本项目采用cli-3脚手架创建项目,采用默认安装模式,没有安装vue-router和…

高仿蘑菇街欢迎页

####蘑菇街欢迎页 ####高仿效果 这里这里…Demo下载地址 #####前言 本文将介绍如何对蘑菇街欢迎页效果进行分析,拆分,并一步步实现1个高仿版本,最重要的设计思路包括以下2点: 1.ViewPager切换时,通过offset偏移量动…

美丽说蘑菇街首页效果(UITableView和UIScrollerView联动)

作为一名菜鸟iOS开发程序员,第一次写文章,有点小激动!进入正题,最近项目中有个需求,类似美丽说蘑菇街首页效果,在网上找了一些资料后自己研究了下终于搞定了! 先看效果: 接下来详细…

【Linux】Nginx 优化与防盗链

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Nginx 优化与防盗链 一、隐藏版本号方法一:修改配置文件方式方法二:修改源码文件,重新编译安装 二、修改用户与组三、缓存时间四、日志切割…

操作系统的最强入门科普(Unix/Linux篇)

今天这篇文章,我们来聊聊操作系统(Operating System)。 说到操作系统,大家都不会陌生。我们天天都在接触操作系统——用台式机或笔记本电脑,使用的是windows和macOS系统;用手机、平板电脑,则是a…

PDF文件无法编辑怎么办

PDF文件无法编辑是因为设置了编辑限制,只要在设置密码的地方输入密码把密码取消就可以自由编辑文件了。如果不知道密码或者忘记了密码,只能使用第三方的解密软件把密码解除掉,现在有很多PDF的辅助软件,可以在网上搜到很多&#xf…

SpringBoot实现服务器PDF文件的下载和预览功能

🍅程序员小王的博客:程序员小王的博客 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 如有编辑错误联系作者,如果有比较好的文章欢迎分享给我,我会取其精华去其糟粕 🍅java自学的学习…

PDF文件不能编辑,有什么办法能够解决?

PDF文件打开之后发现不能编辑,很有可能是因为PDF文件设置了限制编辑。一般来说,想要解决问题,我们只需要将PDF编辑限制解除就可以了 但是大家有时候可能是不知道PDF密码的,那么在不知道PDF密码的情况下,如何解决不能编…

java利用itext编辑pdf

最近项目需要,在调研如何在pdf中增加标识字样,用来区分版本.最后确定用itext来实现 . itext的官网是:http://www.itextpdf.com/ 代码如下: Java代码 /** * authory kingviker * time : 2012-12-12 */ import java.io.FileOutputStream; import java.io.IOExcepti…