【Python入门】Python字典的这些黑科技,你用过几个?
off999 2024-10-05 19:36 41 浏览 0 评论
第1章 字典初识
1.1 字典定义与特点
在Python编程语言的宇宙里,字典(dictionary)是一种非常强大的数据结构,它以键-值对(key-value pairs)的形式存储信息,类似于现实生活中的一本详尽的索引目录。每个键都是独一无二的 ,用于标识与其相关联的特定值。字典的魅力在于它提供了近乎瞬时的查找速度 ,这得益于其内部实现的哈希表机制。与列表或元组不同 ,字典是无序集合,这意味着它们不保证元素的插入顺序。
1.2 字典创建方法
创建字典的方式多样,如同调色盘上的色彩 ,每一种都有其独特的应用场景。
直接赋值法
最直观的方法是直接通过花括号 {} 来初始化一个字典,键值对之间用逗号分隔。
my_dict = {'apple': 4, 'banana': 2, 'orange': 1}使用dict()构造函数
另外 ,也可以利用 dict() 函数来构造字典,这对于动态生成字典或者从其他序列类型转换尤为有用。
another_dict = dict(apple=4, banana=2, orange=1)通过zip函数配对键值序列
如果键和值分别存储在两个列表中,可以巧妙地利用 zip() 函数和 dict() 结合创建字典。
keys = ['apple', 'banana', 'orange']
values = [4, 2, 1]
paired_dict = dict(zip(keys, values))空字典初始化
有时,你可能需要一个空白的字典作为起点,逐步填充。
empty_dict = {}每种方法都有其适用场景,灵活运用这些技巧,能够让你在编写Python程序时更加游刃有余。掌握字典的创建只是探索之旅的开始,接下来深入挖掘其丰富的操作和应用,将使你的代码更加高效、优雅。
第2章 字典基本操作
2.1 添加与修改元素
在字典的日常管理中,添加新键值对或更新已有键对应的值是一项基本技能。让我们一起揭开这神秘面纱。
添加元素
给字典新增一个键值对,只需将其直接赋值给相应键即可。若该键尚不存在,字典会自动为其创建新的键值对;若已存在,则会覆盖原有值。
inventory = {'apples': 9, 'oranges': ?}
inventory['pears'] = ? # 新增键值对 'pears': ?修改元素
修改字典中某个键对应的值,同样采用赋值操作。由于字典的键唯一性 ,直接给已有键赋予新值即可完成更新。
inventory['apples'] = 10 # 更新键 'apples' 的值为 102.2 查询与访问元素
字典的核心价值在于快速查找和访问键对应的值。这里提供两种主要方式:
索引访问
使用中括号 [] 操作符 ,将键名作为索引 ,直接获取对应值。若键不存在,将引发 KeyError。
quantity = inventory['apples'] # 获取 'apples' 的数量get()方法
更安全的做法是使用 get() 方法 ,它接受键名作为第一个参数 ,并可选地设置一个默认值作为第二个参数。当键不存在时 ,返回默认值而非抛出异常。
quantity = inventory.get('kiwis', 0) # 若 'kiwis' 不存在 ,返回 02.3 删除元素
清理字典时,可能需要移除不再需要的键值对。有两种删除方法可供选择:
del语句
使用 del 语句配合字典名及待删除键 ,可直接从字典中移除指定键值对。若键不存在,将引发 KeyError。
del inventory['oranges'] # 删除键 'oranges' 及其值pop()方法
pop() 方法与 del 类似,但更显灵活。它既删除键值对,又返回被删除的值。若键不存在 ,可选择抛出异常或通过指定默认值避免异常。
value = inventory.pop('grapes') # 删除并返回 'grapes' 的值,若不存在则引发 KeyError
value = inventory.pop('strawberries', None) # 删除并返回 'strawberries' 的值,若不存在则返回 None2.4 遍历字典
遍历字典以访问其中的所有键值对,是进行数据处理、分析或展示的关键步骤。有多种遍历方式可供选择:
遍历键
直接迭代字典 ,将依次获得其所有键。
for fruit in inventory:
print(fruit) # 输出:'apples', 'pears'遍历键值对
利用 items() 方法,可同时获取键及其对应的值。
for fruit, count in inventory.items():
print(f"{fruit}: {count}") # 输出:'apples: 10', 'pears: ?'遍历值或仅键/值
使用 values() 或 keys() 方法,可单独遍历字典的值或键。
for count in inventory.values():
print(count) # 输出:10, ?
for fruit in inventory.keys():
print(fruit) # 输出:'apples', 'pears'熟练掌握这些基本操作 ,就如同掌握了字典这本神奇宝典的使用指南 ,无论面对何种数据管理需求,都能得心应手、游刃有余。
第3章 字典内置函数与方法 ?
3.1 len()、del()与clear()
掌握字典的维护艺术,离不开几个关键的操作:了解字典的长度、精确移除项或清空整个字典。
- len() :这个函数像一位忠实的图书管理员,快速清点字典的键值对总数。
my_dict = {'apple': 3, 'banana': 5, 'cherry': 7}
size = len(my_dict) # size 为 3- del :当你需要从字典中永久删除特定的键值对时 ,del 就像是精确的外科手术刀。
del my_dict['banana'] # 删除键 'banana' 及其对应的值- clear() :想让字典回归初始的空白页状态?一个简单的 clear() 足矣。
my_dict.clear() # 清空字典,使其变为 {}3.2 keys(),values(),items()详解
这三位好比字典的三大法宝 ,让你分别访问字典的键、值和键值对。
- keys() :它提供了一把钥匙 ,打开字典的门,只显示所有的键。
keys_list = list(my_dict.keys()) # 获取所有键组成的列表- values() :它如同一个宝盒,里面装满了字典中所有的值。
values_list = list(my_dict.values()) # 获取所有值组成的列表- items() :最全面的视角,它将字典的每一项打包成元组,逐一呈现。
items_list = list(my_dict.items()) # 获取所有键值对组成的列表3.3 get()与setdefault()
这两个方法是处理键不存在情况的高手,优雅而高效。
- get() :它如同一名外交官,请求键对应的值,若键不存在,可优雅地返回一个默认值。
quantity = my_dict.get('pear', 0) # 如果 'pear' 不存在,返回 0- setdefault() :它不仅具备 get() 的功能,还能在键不存在时自动添加默认值到字典。
my_dict.setdefault('pear', 2) # 如果 'pear' 不存在,添加键值对 'pear': 23.4 update()与合并字典
在字典的世界里,合并信息就像是一场友好的聚会,update() 是这场聚会的组织者。
- update() :它能将另一个字典的键值对合并到当前字典中,如果有重叠的键,则后者覆盖前者。
new_items = {'pear': 4, 'orange': 6}
my_dict.update(new_items) # 合并 new_items 到 my_dict通过这些内置函数与方法的精妙运用,你便能更加自如地驾驭字典,无论是日常的数据处理还是复杂的逻辑构建,都能游刃有余。
第4章 字典进阶技巧
4.1 字典推导式与生成器表达式
在Python中,字典推导式与生成器表达式是构建字典的高效工具,它们能简化代码,提升可读性。
- 字典推导式:它宛如魔法般将列表或其他可迭代对象转化为字典。形式上与列表推导式相似,只是将方括号 [ ] 替换为花括号 { },且内部包含键值对表达式。
words = ['apple', 'banana', 'cherry']
lengths_dict = {word: len(word) for word in words} # 生成 {'apple': 5, 'banana': 6, 'cherry': 6}- 生成器表达式:对于大型数据集,字典生成器表达式提供了内存友好的替代方案。它与字典推导式语法相似,只是用圆括号 ( ) 包裹。生成器表达式返回一个可迭代对象 ,每次迭代返回一个键值对。
words = ('apple', 'banana', 'cherry')
lengths_gen = ({word: len(word)} for word in words) # 返回一个生成器对象
for pair in lengths_gen:
print(pair) # 分别输出 {'apple': 5}, {'banana': 6}, {'cherry': 6}4.2 字典视图与键值对排序
字典视图和排序功能,让你能以不同的视角审视和组织字典内容。
- 字典视图:keys(), values(), items() 方法返回的对象并非列表,而是视图对象。它们反映字典当前状态 ,且在字典更改时自动更新。视图支持大部分序列操作,如切片、成员测试等。
my_dict = {'a': 1, 'b': 2, 'c': 3}
key_view = my_dict.keys()
print(list(key_view)) # 输出:['a', 'b', 'c']
my_dict['d'] = 4 # 添加新键值对
print(list(key_view)) # 输出:['a', 'b', 'c', 'd']- 键值对排序:虽然字典本身是无序的 ,但可以通过 sorted() 函数对键、值或键值对进行排序。结合 items() 方法,可以轻松得到有序的键值对列表。
my_dict = {'banana': ?, 'apple': ?, 'orange': ?}
sorted_pairs = sorted(my_dict.items(), key=lambda x: x[1]) # 按值排序
print(sorted_pairs) # 输出:[('apple', ?), ('orange', ?), ('banana', ?)]4.3 使用defaultdict与Counter提升效率
Python标准库提供了两个字典子类,defaultdict 和 Counter,它们专为特定场景设计,极大地提高了编码效率。
- defaultdict :当你期望字典在访问不存在的键时自动添加默认值 ,defaultdict 就派上了用场。只需在创建时指定默认工厂函数。
from collections import defaultdict
counts = defaultdict(int) # 使用 int() 作为默认值工厂,返回 0
for fruit in ['apple', 'banana', 'apple']:
counts[fruit] += 1 # 自动添加新键 ,无需检查是否存在
print(counts) # 输出:{'apple': 2, 'banana': 1}- Counter :Counter 类专用于计数任务,它是一个子类化自 dict 的容器 ,实现了计数统计功能。它可以轻松处理大量数据的频次统计。
from collections import Counter
fruits = ['apple', 'banana', 'apple', 'cherry', 'banana', 'banana']
fruit_counts = Counter(fruits)
print(fruit_counts) # 输出:Counter({'banana': 3, 'apple': 2, 'cherry': 1})4.4 字典与JSON数据互转
在数据交换或存储场景中 ,JSON格式广泛应用。Python提供了便捷的模块 json 用于字典与JSON字符串之间的转换。
- 字典转JSON:使用 json.dumps() 方法将字典编码为JSON字符串。
import json
data = {'name': 'Alice', 'age': 30, 'city': 'New York'}
json_str = json.dumps(data)
print(json_str) # 输出:'{"name": "Alice", "age": 30, "city": "New York"}'- JSON转字典:对应地,json.loads() 方法负责将JSON字符串解码回字典。
json_str = '{"name": "Bob", "age": 35, "city": "San Francisco"}'
loaded_data = json.loads(json_str)
print(loaded_data) # 输出:{'name': 'Bob', 'age': 35, 'city': 'San Francisco'}掌握这些进阶技巧,你的字典操作技能将如虎添翼,无论面对何种复杂场景,都能游刃有余地处理字典相关的数据问题。
第5章 实战应用案例
5.1 字典在数据分析中的应用
在数据分析的浩瀚星海中,字典是组织和解析数据的璀璨明星。例如 ,在处理调查问卷数据时,可以用字典来汇总各选项的投票次数。
survey_results = {
'Yes': 42,
'No': 17,
'Maybe': 11
}
# 计算总投票数
total_votes = sum(survey_results.values())
percentage_yes = (survey_results['Yes'] / total_votes) * 100
print(f"Yes占比: {percentage_yes:.2f}%")5.2 字典在网页爬虫中的应用
网络爬虫探索互联网的每一个角落 ,字典常被用来存储抓取的数据 ,便于后续分析。设想爬取一个博客网站的文章标题和链接。
import requests
from bs4 import BeautifulSoup
blog_posts = {}
response = requests.get("http://example.com/blog")
soup = BeautifulSoup(response.text, 'html.parser')
for post in soup.find_all('div', class_='post'):
title = post.find('h2').text
link = post.find('a')['href']
blog_posts[title] = link
# 打印第一条文章的信息
first_post_title = next(iter(blog_posts))
print(f"文章标题: {first_post_title}, 链接: {blog_posts[first_post_title]}")5.3 字典在数据库查询结果处理中的应用
数据库查询结果通常以行和列的形式呈现 ,将这些结果转化为字典,便于进一步处理或展示。以SQLite数据库为例,查询用户信息并以字典形式存储。
import sqlite3
conn = sqlite3.connect('users.db')
cursor = conn.cursor()
cursor.execute("SELECT id, username, email FROM users")
rows = cursor.fetchall()
# 将查询结果转换为字典列表
users_dict = [{column: row[i] for i, column in enumerate(cursor.description)} for row in rows]
# 查看第一位用户的用户名
first_user = users_dict[0]
print(f"第一位用户用户名: {first_user['username']}")这些实战案例展示了字典如何成为解决实际问题的利器,无论是在数据的海洋中航行,还是在信息的丛林里探索 ,字典都是不可或缺的导航图。
第6章 总结与思考
Python字典,作为一种键值对数据结构 ,以其独特的哈希表实现提供高效查找与操作。从创建、基本操作到内置函数与方法,再到进阶技巧与实战应用,全方位展现了其在数据分析、网页爬虫及数据库查询等领域的重要作用。与列表、元组等结构对比,字典以键唯一性实现精准访问,而defaultdict与Counter等扩展类进一步提升效率。在项目开发中 ,遵循最佳实践,如合理使用推导式、视图与排序,以及适时转换为JSON数据 ,可显著提升代码质量与可维护性。展望未来,Python字典将持续优化,引入新特性以适应不断变化的编程需求。
关注不灵兔,Python学习不迷路
相关推荐
- 安全教育登录入口平台(安全教育登录入口平台官网)
-
122交通安全教育怎么登录:122交通网的注册方法是首先登录网址http://www.122.cn/,接着打开网页后,点击右上角的“个人登录”;其次进入邮箱注册,然后进入到注册页面,输入相关信息即可完...
- 大鱼吃小鱼经典版(大鱼吃小鱼经典版(经典版)官方版)
-
大鱼吃小鱼小鱼吃虾是于谦跟郭麒麟的《我的棒儿呢?》郭德纲说于思洋郭麒麟作诗的相声,最后郭麒麟做了一首,师傅躺在师母身上大鱼吃小鱼小鱼吃虾虾吃水水落石出师傅压师娘师娘压床床压地地动山摇。...
-
- 哪个软件可以免费pdf转ppt(免费的pdf转ppt软件哪个好)
-
要想将ppt免费转换为pdf的话,我们建议大家可以下一个那个wps,如果你是会员的话,可以注册为会员,这样的话,在wps里面的话,就可以免费将ppt呢转换为pdfpdf之后呢,我们就可以直接使用,不需要去直接不需要去另外保存,为什么格式转...
-
2026-02-04 09:03 off999
- 电信宽带测速官网入口(电信宽带测速官网入口app)
-
这个网站看看http://www.swok.cn/pcindex.jsp1.登录中国电信网上营业厅,宽带光纤,贴心服务,宽带测速2.下载第三方软件,如360等。进行在线测速进行宽带测速时,尽...
- 植物大战僵尸95版手机下载(植物大战僵尸95 版下载)
-
1可以在应用商店或者游戏平台上下载植物大战僵尸95版手机游戏。2下载教程:打开应用商店或者游戏平台,搜索“植物大战僵尸95版”,找到游戏后点击下载按钮,等待下载完成即可安装并开始游戏。3注意:确...
- 免费下载ppt成品的网站(ppt成品免费下载的网站有哪些)
-
1、Chuangkit(chuangkit.com)直达地址:chuangkit.com2、Woodo幻灯片(woodo.cn)直达链接:woodo.cn3、OfficePlus(officeplu...
- 2025世界杯赛程表(2025世界杯在哪个国家)
-
2022年卡塔尔世界杯赛程公布,全部比赛在卡塔尔境内8座球场举行,2022年,决赛阶段球队全部确定。揭幕战于当地时间11月20日19时进行,由东道主卡塔尔对阵厄瓜多尔,决赛于当地时间12月18日...
- 下载搜狐视频电视剧(搜狐电视剧下载安装)
-
搜狐视频APP下载好的视频想要导出到手机相册里方法如下1、打开手机搜狐视频软件,进入搜狐视频后我们点击右上角的“查找”,找到自已喜欢的视频。2、在“浏览器页面搜索”窗口中,输入要下载的视频的名称,然后...
- 永久免费听歌网站(丫丫音乐网)
-
可以到《我爱音乐网》《好听音乐网》《一听音乐网》《YYMP3音乐网》还可以到《九天音乐网》永久免费听歌软件有酷狗音乐和天猫精灵,以前要跳舞经常要下载舞曲,我从QQ上找不到舞曲下载就从酷狗音乐上找,大多...
- 音乐格式转换mp3软件(音乐格式转换器免费版)
-
有两种方法:方法一在手机上操作:1、进入手机中的文件管理。2、在其中选择“音乐”,将显示出手机中的全部音乐。3、点击“全选”,选中所有音乐文件。4、点击屏幕右下方的省略号图标,在弹出菜单中选择“...
- 电子书txt下载(免费的最全的小说阅读器)
-
1.Z-library里面收录了近千万本电子书籍,需求量大。2.苦瓜书盘没有广告,不需要账号注册,使用起来非常简单,直接搜索预览下载即可。3.鸠摩搜书整体风格简洁清晰,书籍资源丰富。4.亚马逊图书书籍...
- 最好免费观看高清电影(播放免费的最好看的电影)
-
在目前的网上选择中,IMDb(互联网电影数据库)被认为是最全的电影网站之一。这个网站提供了各种类型的电影和电视节目的海量信息,包括剧情介绍、演员表、评价、评论等。其还提供了有关电影制作背后的详细信息,...
- 孤单枪手2简体中文版(孤单枪手2简体中文版官方下载)
-
要将《孤胆枪手2》游戏的征兵秘籍切换为中文,您可以按照以下步骤进行操作:首先,打开游戏设置选项,通常可以在游戏主菜单或游戏内部找到。然后,寻找语言选项或界面选项,点击进入。在语言选项中,选择中文作为游...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
win7系统还原步骤图解(win7还原电脑系统的步骤)
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
python入门到脱坑 输入与输出—str()函数
-
16949认证费用是多少(16949审核员太难考了)
-
linux软件(linux软件图标)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
windows7旗舰版多少钱(win7旗舰版要多少钱)
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
