当前位置:首页 > 科技  > 软件

20 个 Python 字典映射技巧,让数据处理更高效

来源: 责编: 时间:2024-06-24 09:14:25 265观看
导读字典作为Python的日常工具,拥有快速查找、高效存储等特性,是数据处理的必备神器。让我们一起揭开它的15个隐藏技巧,让你的代码飞起来!1. 初始化小技巧:快速创建字典# 使用zip函数结合列表,一键成字典keys = ['name', 'age'

字典作为Python的日常工具,拥有快速查找、高效存储等特性,是数据处理的必备神器。让我们一起揭开它的15个隐藏技巧,让你的代码飞起来!wvO28资讯网——每日最新资讯28at.com

wvO28资讯网——每日最新资讯28at.com

1. 初始化小技巧:快速创建字典

# 使用zip函数结合列表,一键成字典keys = ['name', 'age']values = ['Alice', 24]my_dict = dict(zip(keys, values))print(my_dict)

这个小魔法直接将两个列表配对成字典,是不是很神奇?wvO28资讯网——每日最新资讯28at.com

2. 字典推导式,简洁之美

numbers = [1, 2, 3, 4]squares = {num: num*num for num in numbers}print(squares)

一行代码,数字变平方,推导式让你的代码优雅到不行!wvO28资讯网——每日最新资讯28at.com

3. 获取键不存在的默认值,避免KeyError

my_dict = {'name': 'Bob'}print(my_dict.get('age', 'Not Found'))  # 不怕找不到,直接告诉你“Not Found”

这招用get方法,安全访问,妈妈再也不担心我遇到KeyError了。wvO28资讯网——每日最新资讯28at.com

4. 删除键值对,干净利落

# pop方法,删除并返回值age = my_dict.pop('age', 'Already gone')  # 如果不存在,就默认返回'Already gone'print(age)print(my_dict)  # 看,'age'没了

pop一出,谁与争锋,键值对消失无踪。wvO28资讯网——每日最新资讯28at.com

5. 更新字典,合并高手

dict1 = {'a': 1, 'b': 2}dict2 = {'b': 3, 'c': 4}dict1.update(dict2)print(dict1)  # 'b'的值被更新,'c'加入,合并就这么简单

update方法,字典合并不费吹灰之力。wvO28资讯网——每日最新资讯28at.com

6. 遍历字典,洞察每个角落

for key, value in my_dict.items():    print(f"Key: {key}, Value: {value}")

items方法让我们遍历得明明白白,每一个键值对都不放过。wvO28资讯网——每日最新资讯28at.com

7. 只取键,或只取值

keys_only = my_dict.keys()values_only = my_dict.values()print(list(keys_only))  # 转成列表方便查看print(list(values_only))

keys和values方法,让你专注你想要的那部分。wvO28资讯网——每日最新资讯28at.com

8. 检查键是否存在,一步到位

if 'age' in my_dict:    print("Age is there!")else:    print("Sorry, no age.")

直接用in,检查键是否存在,就是这么直接。wvO28资讯网——每日最新资讯28at.com

9. 字典长度,一目了然

print(len(my_dict))  # 瞬间知道字典大小

len函数,快速统计字典的键数量。wvO28资讯网——每日最新资讯28at.com

10. 字典排序,按值或按键

# 按值排序sorted_dict = sorted(my_dict.items(), key=lambda x: x[1])print(sorted_dict)# 按键排序sorted_by_key = sorted(my_dict.items())print(sorted_by_key)

排序函数+lambda表达式,按需排序,灵活自如。wvO28资讯网——每日最新资讯28at.com

11. 字典转列表,形式转换

list_of_tuples = list(my_dict.items())print(list_of_tuples)

轻松转换,数据形态任你玩转。wvO28资讯网——每日最新资讯28at.com

12. 清空字典,重头再来

my_dict.clear()print(my_dict)  # 空空如也,准备迎接新的数据

clear方法,一切从零开始。wvO28资讯网——每日最新资讯28at.com

13. 字典嵌套,数据结构的魔术

nested_dict = {    'person1': {'name': 'Alice', 'age': 24},    'person2': {'name': 'Bob', 'age': 30}}print(nested_dict['person1']['name'])  # 访问内层,深挖数据

像俄罗斯套娃一样,一层又一层,复杂数据轻松管理。wvO28资讯网——每日最新资讯28at.com

14. 利用fromkeys创建初始化字典

keys_list = ['name', 'age', 'city']default_values = Nonemy_init_dict = dict.fromkeys(keys_list, default_values)print(my_init_dict)  # 统一初始值,批量创建

fromkeys,批量初始化,效率满满。wvO28资讯网——每日最新资讯28at.com

15. 字典解包,操作升级

dict_a = {'x': 1, 'y': 2}dict_b = {'y': 3, 'z': 4}{**dict_a, **dict_b}  # **操作符,解包合并,新字典诞生

星号解包,合并字典新姿势,简洁而强大。wvO28资讯网——每日最新资讯28at.com

进阶使用和高级技巧

16. 使用defaultdict避免KeyError

from collections import defaultdict# 创建一个默认值为列表的字典my_default_dict = defaultdict(list)my_default_dict['fruits'].append('apple')my_default_dict['fruits'].append('banana')print(my_default_dict)

defaultdict自动初始化键对应的值,这里用列表,添加元素变得异常简单,无需每次都检查键是否存在。wvO28资讯网——每日最新资讯28at.com

17. 字典的深拷贝与浅拷贝

import copyoriginal_dict = {'a': [1, 2], 'b': 3}shallow_copy = copy.copy(original_dict)deep_copy = copy.deepcopy(original_dict)# 修改原字典中的列表original_dict['a'][0] = 99print("Original:", original_dict)print("Shallow Copy:", shallow_copy)  # 浅拷贝受影响print("Deep Copy:", deep_copy)  # 深拷贝不受影响

了解深浅拷贝的区别,对于处理包含可变对象(如列表)的字典至关重要。wvO28资讯网——每日最新资讯28at.com

18. 字典的视图对象:动态观察变化

my_dict = {'name': 'Alice', 'age': 24}keys_view = my_dict.keys()print("Initial Keys:", keys_view)# 添加新的键值对my_dict['city'] = 'Wonderland'print("Keys after update:", keys_view)  # 视图自动更新

字典的keys(), values(), items()返回的是视图对象,可以实时反映字典的变化。wvO28资讯网——每日最新资讯28at.com

19. 高级字典推导式:多层映射

data = [('John', 'Doe', 23), ('Jane', 'Doe', 24)]people = {f"{first} {last}": age for first, last, age in data}print(people)

利用列表中的子列表,通过字典推导式快速构建复杂的映射关系。wvO28资讯网——每日最新资讯28at.com

20. 使用dict.setdefault(),访问与初始化二合一

my_dict = {}my_dict.setdefault('score', []).append(90)my_dict.setdefault('score', []).append(95)print(my_dict)  # 避免了多次检查和初始化

如果键不存在,则初始化并返回该键对应的值,否则直接返回已有的值,非常实用。wvO28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-95921-0.html20 个 Python 字典映射技巧,让数据处理更高效

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 字节面试:说说零拷贝技术实现原理?

下一篇: 为什么在2024年应该使用AVIF而不是JPEG、WebP、PNG和GIF

标签:
  • 热门焦点
  • 小米降噪蓝牙耳机Necklace分享:听一首歌 读懂一个故事

    在今天下午的小米Civi 2新品发布会上,小米还带来了一款新的降噪蓝牙耳机Necklace,我们也在发布结束的第一时间给大家带来这款耳机的简单分享。现在大家能见到最多的蓝牙耳机
  • Golang 中的 io 包详解:组合接口

    io.ReadWriter// ReadWriter is the interface that groups the basic Read and Write methods.type ReadWriter interface { Reader Writer}是对Reader和Writer接口的组合,
  • 十个简单但很有用的Python装饰器

    装饰器(Decorators)是Python中一种强大而灵活的功能,用于修改或增强函数或类的行为。装饰器本质上是一个函数,它接受另一个函数或类作为参数,并返回一个新的函数或类。它们通常用
  • 一文掌握 Golang 模糊测试(Fuzz Testing)

    模糊测试(Fuzz Testing)模糊测试(Fuzz Testing)是通过向目标系统提供非预期的输入并监视异常结果来发现软件漏洞的方法。可以用来发现应用程序、操作系统和网络协议等中的漏洞或
  • 大厂卷向扁平化

    来源:新熵作者丨南枝 编辑丨月见大厂职级不香了。俗话说,兵无常势,水无常形,互联网企业调整职级体系并不稀奇。7月13日,淘宝天猫集团启动了近年来最大的人力制度改革,目前已形成一
  • 东方甄选单飞:有些鸟注定是关不住的

    文/彭宽鸿编辑/罗卿东方甄选创始人俞敏洪带队的“7天甘肃行”直播活动已在近日顺利收官。成立后一年多时间里,东方甄选要脱离抖音自立门户的传闻不绝于耳,“7
  • 年轻人的“职场羞耻感”,无处不在

    作者:冯晓亭 陶 淘 李 欣 张 琳 马舒叶来源:燃次元“人在职场,应该选择什么样的着装?”近日,在网络上,一个与着装相关的帖子引发关注,在该帖子里,一位在高级写字楼亚洲金
  • 到手价3099元起!iQOO Neo8 Pro今日首销:安卓性能最强旗舰

    5月23日,iQOO如期举行了新品发布会,全新的iQOO Neo8系列也正式与大家见面,包含iQOO Neo8和iQOO Neo8 Pro两个版本,其中标准版搭载高通骁龙8+,而Pro版更
  • 微软发布Windows 11新版 引入全新任务栏状态

    近日,微软发布了Windows 11新版,而Build 22563更新主要引入了几周前曝光的平板模式任务栏等,系统更流畅了。更新中,Windows 11加入了专门针对平板优化的任务栏
Top