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

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

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

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

这个小魔法直接将两个列表配对成字典,是不是很神奇?

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

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

一行代码,数字变平方,推导式让你的代码优雅到不行!

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

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

这招用get方法,安全访问,妈妈再也不担心我遇到KeyError了。

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

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

pop一出,谁与争锋,键值对消失无踪。

5. 更新字典,合并高手

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

update方法,字典合并不费吹灰之力。

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

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

items方法让我们遍历得明明白白,每一个键值对都不放过。

7. 只取键,或只取值

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

keys和values方法,让你专注你想要的那部分。

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

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

直接用in,检查键是否存在,就是这么直接。

9. 字典长度,一目了然

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

len函数,快速统计字典的键数量。

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表达式,按需排序,灵活自如。

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

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

轻松转换,数据形态任你玩转。

12. 清空字典,重头再来

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

clear方法,一切从零开始。

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

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

像俄罗斯套娃一样,一层又一层,复杂数据轻松管理。

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

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

fromkeys,批量初始化,效率满满。

15. 字典解包,操作升级

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

星号解包,合并字典新姿势,简洁而强大。


进阶使用和高级技巧

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自动初始化键对应的值,这里用列表,添加元素变得异常简单,无需每次都检查键是否存在。

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)  # 深拷贝不受影响

了解深浅拷贝的区别,对于处理包含可变对象(如列表)的字典至关重要。

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()返回的是视图对象,可以实时反映字典的变化。

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

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

利用列表中的子列表,通过字典推导式快速构建复杂的映射关系。

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

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

如果键不存在,则初始化并返回该键对应的值,否则直接返回已有的值,非常实用。

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

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

相关文章

数据治理如何评估

在当今数字化时代,数据被认为是企业的重要资产之一,而有效的数据治理则成为确保数据价值和可靠性的关键。数据治理不仅仅是关于数据的管理,更是关于组织如何评估、保护和优化数据资产的过程。经过数聚多年的项目经验,我们就来从企…

深入解析Java编写优雅代码的技巧(下)

# 深入解析Java编写优雅代码的技巧(下)在上一篇文章中,我们介绍了如何在Java中编写优雅代码的几种基本技巧,包括代码风格、命名规范、注释和编写简洁代码的原则。本文将继续探讨代码重构、设计模式和单元测试等高级技巧。## 4. 代…

AI绘画Stable Diffusion 超强一键去除图片中的物体,免费使用!

大家好,我是设计师阿威 在生成图像时总有一些不完美的小瑕疵,比如多余的物体或碍眼的水印,它们破坏了图片的美感。但别担心,今天我们将介绍一款神奇的工具——sd-webui-cleaner,它可以帮助我们使用Stable Diffusion轻…

docker使用及Dockerfile编写

docker 基础使用 Linux安装docker # Linux安装docker服务 sudo apt install docker.io# 把普通用户加入到docker组中(解决docker ps权限问题,$USER通常为用户名) sudo gpasswd -a $USER docker newgrp dockerdocker 环境路径配置 # 修改系…

Rust高性能日志库tklog0.0.8—支持mod设置参数

tklog是rust高性能结构化日志库,支持同步日志,异步日志,支持自定义日志的输出格式,支持按时间,按文件大小分割日志文件,支持日志文件压缩备份,支持官方日志库标准API,支持mod独立参数…

怎么将文件免费扫描?这篇文章教你几个文件扫描方法

随着时间的流逝,我们所珍藏的纸质文件可能会面临破损和丢失的风险。 为了确保这些宝贵的资料得到妥善保管,将它们转换为电子格式并存储于电脑中无疑是一个明智之举。 那么,我们应当如何将这些纸质资料转换为易于管理和访问的电子文档呢&…

CMake基础教程

用法 cmake -B build // 配置,在源码目录用 -B 直接创建 build 目录并生成 build/Makefile cmake --build build -j4 // 构建,Linux会调用make,Windows会调用devenv.exe cmake --version 定义 -DCMAKE_INSTALL_PREFIX/opt/openvdb-8.0 /…

C++必修:模版的入门到实践

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:C学习 贝蒂的主页:Betty’s blog 1. 泛型编程 首先让我们来思考一个问题,如何实现一个交换函数&#x…

企业有必要使用OVSSL证书吗?

在数字化时代,SSL证书不仅仅是一种技术保障,它更是企业线上服务的重要组成部分。企业级OVSSL证书以其独特的优势,为企业带来了多重好处。 包含以下几点: 1、增强信任度:OV SSL证书在颁发前会对组织的身份进行验证&…

找出一个整型数组中的元素的最大值

这个问题在之前的文章中曾用其他方法解决,现在用类来处理,读者可以比较不同方法的特点。 编写程序: 运行结果: 程序分析: 程序看起来比较长,其实并不复杂,它包括以下3部分:…

Redis 基本配置

Redis的配置文件通常位于 /etc/redis/redis.conf。以下是一些常见的Redis配置选项和它们的说明: 基本配置 1. 绑定地址 bind 127.0.0.1默认情况下,Redis只监听本地接口。如果需要远程访问,可以修改成bind 0.0.0.0,不过这会带来…

GPT-5的未来:技术飞跃与社会影响

文章目录 GPT-5的未来:技术飞跃与社会影响技术上的飞跃GPT-5在技术上将包括几个重要的进步:对工作和日常生活的影响新应用场景和创新可能性挑战和应对策略面向未来的准备结语 GPT-5的未来:技术飞跃与社会影响 在美国达特茅斯工程学院周四公布…

生产实习Day13 ---- 神经网络模型介绍

文章目录 传统的神经网络模型注意力机制的引入注意力机制的本质Encoder-Decoder 框架注意力机制在 Encoder-Decoder 中的应用Self-Attention 机制Transformer 模型注意力机制的优势总结 传统的神经网络模型 在深度学习中,传统的神经网络模型,如循环神经…

【离散数学】图的随机生成和欧拉(回)路的确定(c语言实现)

实验要求 变量定义 因为如果我们使用局部变量,每一个函数都会使用这些变量,会让函数的参数越变越多。所以我们定义全局变量,这样就不用在参数中调用了。 #define MAX 100 int arrMap[MAX][MAX] { 0 };//图的矩阵 int degree[MAX] { 0 };…

[职场] 提升学历考研再就业有必要吗 #其他#知识分享

提升学历考研再就业有必要吗 有很多人觉得自己学历不够高,求职第一关可能就通过不了。因此想要继续攻读,最近有人问小编提升学历考研有必要吗?“硕士学历和三年的工作经验哪个更重要?” 这个还是要针对具体岗位而言。综合类型的岗位往往不需…

免费分享:2000-2020年中国长时间序列夜间灯光数据集(附下载方法)

夜间灯光数据集直观反映了地表夜间灯光亮度,进而揭示了人类活动强度,为分析城市扩张、人口迁移、经济发展等提供了连续、全面的视角,有助于深入理解中国城市化的历史进程和未来趋势。 数据简介 基于DMSP/OLS第四版非辐射定标夜间年平均灯光强…

【HW必备】用友NC-Cloud存在17处漏洞合集

漏洞简介 NC Cloud是用友公司推出的大型企业数字化平台。支持公有云、混合云、专属云的灵活部署模式。NC Cloud完全基于云原生架构,技术先进、性能稳定、自主安全可控,支撑大中型以及超大型集团企业N层多site混合云部署方案,支持整个系统高可…

【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第47课-动态切换内嵌blender展厅的壁画

【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第47课-动态切换内嵌blender展厅的壁画 使用dtns.network德塔世界(开源的智体世界引擎),策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由JavaScript编…

MySQL数据库(四):视图和索引

在数据库管理中,视图和索引是两种关键工具,它们各自发挥独特的作用以优化数据查询和管理。视图通过简化复杂查询、提高数据安全性和提供数据抽象,帮助用户轻松访问数据。而索引则通过加速查询、确保数据唯一性以及优化排序和分组操作&#xf…

哪个牌子充电宝好?好用充电宝排行榜!精选充电宝排行榜

在如今这个科技飞速发展的时代,充电宝已然成为我们日常生活中不可或缺的伴侣。无论是出差旅行,还是日常通勤,我们都离不开它为我们的电子设备保驾护航。然而,面对市场上琳琅满目的充电宝品牌,您是否感到眼花缭乱&#…