如何在仅含目标键的两个dict中取值且不使用if语句?
不用if语句获取字典中对应键的值
已知两个字典d1、d2,键k恰好存在于其中一个字典中,不用if语句的话,可以用以下几种方式实现取值:
借助字典
get()方法(推荐):
字典的get()方法可以指定键不存在时的默认返回值,结合题目中“k必在其中一个字典”的前提,直接写:return d1.get(k, d2[k])这个方法最可靠,哪怕键对应的值是
0、空字符串''这类假值也不会出错,因为get()仅在键不存在时才返回默认值。合并字典后取值:
因为k只存在于一个字典中,合并两个字典不会出现键冲突,直接取合并后字典的k值即可:- Python 3.9及以上版本可用
|运算符合并:return (d1 | d2)[k] - 兼容更早Python版本的解包合并方式:
return {**d1, **d2}[k]
- Python 3.9及以上版本可用
逻辑或判断(谨慎使用):
如果能确保k对应的取值不会是0、''、False这类假值,也可以用逻辑或:return d1.get(k) or d2[k]但如果值本身是假值,这个方法会误判(比如d1中k对应
0,会错误返回d2[k]),所以非必要不推荐。
内容的提问来源于stack exchange,提问作者roulette01
相关产品推荐
相关产品推荐

