Python小技巧:别再用"笨办法"处理字典了!

34 阅读2分钟

字典是Python里最常用的数据结构之一,但很多新手只会用  dict[key]  取值、 for key in dict  遍历——其实字典藏了好几个"进阶偏基础"的用法,能让代码更简洁、更安全,还不容易翻车!

一、get() 方法:取值不怕KeyError(告别if判断)

新手取值时,为了避免键不存在报错,会写一堆if判断,其实用  get()  方法一行就能搞定,还能设置默认值。

反面例子(新手写法):

user = {"name": "小明", "age": 20}
# 想获取地址,没有就返回"未知"
if "address" in user:
    address = user["address"]
else:
    address = "未知"
print(address)  # 输出:未知

 

进阶写法(get() 方法):

user = {"name": "小明", "age": 20}
address = user.get("address", "未知")  # 键不存在时返回默认值
print(address)  # 输出:未知

 

二、items() 方法:键值对一起遍历(不用再查字典)

遍历字典时,新手常先遍历键,再通过键查值,效率低还麻烦, items()  能直接获取键值对,一步到位。

反面例子(新手写法):

score = {"语文": 90, "数学": 95, "英语": 88}
for subject in score:
    print(f"{subject}: {score[subject]}")  # 还要通过键查值

 

进阶写法(items() 方法):

score = {"语文": 90, "数学": 95, "英语": 88}
for subject, grade in score.items():  # 直接拆包键值对
    print(f"{subject}: {grade}")
# 输出:
# 语文: 90
# 数学: 95
# 英语: 88

 

三、字典推导式:一行生成新字典(告别for+update)

想根据已有数据生成新字典,新手会用循环+ update() ,字典推导式能一行搞定,逻辑更清晰。

反面例子(新手写法):

numbers = {"a": 1, "b": 2, "c": 3, "d": 4}
# 生成值为偶数的新字典
even_numbers = {}
for k, v in numbers.items():
    if v % 2 == 0:
        even_numbers[k] = v
print(even_numbers)  # 输出:{"b":2, "d":4}

 

进阶写法(字典推导式):

numbers = {"a": 1, "b": 2, "c": 3, "d": 4}
even_numbers = {k: v for k, v in numbers.items() if v % 2 == 0}
print(even_numbers)  # 输出:{"b":2, "d":4}

 

这三个技巧看似简单,但能解决实际开发中80%的字典操作问题,学会直接让代码质感升级!