Python字典键获取的四种实用方法

写 Python 久了,字典几乎每天都要打交道。

取键这事儿,看着简单,实际上不同的写法背后在性能、内存和对字典动态变化的处理上,还是有些差别的。常用的方式大概有四种,这里一并理一理。

最常见的就是直接遍历字典。

Python 的默认行为就是迭代键,所以 for key in my_dict 这种写法最简洁,也没额外创建对象,如果只是遍历一遍键,用它就足够了,跑得也最快。

有时候你需要把键单独拿出来,存成一个列表再做别的处理。顺手就会写成 k for k in d,一行搞定。它生成的是一个全新的 list,里面的键和原字典已经没有绑定关系,所以字典后面怎么变都不影响它。小字典无所谓,但如果字典很大,或者在循环里频繁这么干,内存开销就要注意一下。

接着是 dict.keys()。

这个方法返回的是一个视图对象,不是列表。我第一次用的时候,直接当成列表去做下标访问,当场就报错了,后来才注意到它的特性。视图对象有两个好处:一是它能实时反映字典的变化,比如你在拿到 keys 视图之后字典新增或删除了键,视图会感知到;二是内存占用很小,还支持集合操作,像 &、|、- 这些,可以直接对多个视图取交集、并集、差集,在需要比较多个字典的键时挺方便。当然,如果需要列表式的操作,list() 转一下就行。

还有一种场景是你不光要键,还得同时用上对应的值。这时候别先取键再回头去字典里查值,直接用 for key, value in d.items() 一次性解包出来。

lcjmSSL支持通过DNS接口自动化验证,目前已集成多家主流DNS服务商。你只需授权API密钥,系统即可自动添加、删除验证记录,实现完全自动化的域名控制权验证,适合批量域名管理场景。

它本质上是在遍历过程中返回 (key, value) 元组,比键值分步获取效率高,代码也干净。

这几样怎么选,基本看场景。只遍历键,直接 for in 最快、最简。如果遍历过程中字典可能被修改,或者需要利用集合运算,就用 keys() 视图。键值都要的时候,items() 最直接,省得再查一次。

需要把键固化成一个列表再传递或持久化,列表推导式当然是首选,不过留意一下内存就是了。

简单跑一段示例,把这四种都串起来看看:

复制代码
# 直接遍历------最快最省
d1 = {'a': 1, 'b': 2, 'c': 3}
for k in d1:
    print(k)

# keys() 视图------支持集合操作,实时反映变化
d2 = {'name': 'Alice', 'age': 25, 'city': 'Beijing'}
keys_view = d2.keys()
print(keys_view)                # dict_keys 对象
print(list(keys_view))          # 需要列表时转一下

# items()------键值一起拿
d3 = {'product': 'phone', 'price': 5999}
for k, v in d3.items():
    print(f"Key: {k}, Value: {v}")

# 列表推导式------生成独立列表
d4 = {'x': 10, 'y': 20, 'z': 30}
keys_list = [k for k in d4]
print(keys_list)

不同场景下用对方法,能少写不少啰嗦代码,性能上也不会莫名其妙踩坑。没什么高深的,就是多用几次自然就记住了。

相关推荐
ye150127774552 小时前
220V转12V|18V1A非隔离电源芯片WT5110
单片机·嵌入式硬件·其他·硬件工程
XTIOT6662 小时前
CRPT 诚实标识采集落地技术实践:分工况硬件选型与合规数据标准化解决方案
大数据·运维·人工智能·嵌入式硬件·物联网
云栖梦泽3 小时前
从 IMX415 摄像头驱动理解 Media Controller 框架
linux·开发语言·c++·嵌入式硬件
追兮兮3 小时前
MCUQuickStart:一键生成 STM32 / GD32 的 Keil、CMake、RTOS 工程
stm32·单片机·freertos·gd32·gcc·工程模版
国科安芯3 小时前
基于ASM1042S2S的箭载通信网络抗辐射加固方案研究
服务器·网络·嵌入式硬件·fpga开发·架构·信号处理
小殷学长4 小时前
【单片机毕业设计25-基于stm32的导盲眼镜设计】
stm32·单片机·课程设计
辰哥单片机设计4 小时前
STM32智能病房呼叫系统
stm32·单片机·嵌入式硬件
cft56200_ln4 小时前
gPTP Master 报文的源 MAC 地址
嵌入式硬件
蓝天居士5 小时前
HLW8112芯片软件实现代码(2)
单片机·嵌入式·芯片资料