如何通过指定键从Python字典获取键值对?寻求简洁实现方式
解决方案
1. 快速生成目标结构
已知键k(比如k = 'b')和字典d,可以直接生成你需要的结构:
- 单键值对字典:
{k: d[k]}(这是最直接的写法,键是长字符串时,提前把键存成变量能大幅简化代码) - 元组:
(k, d[k]) - 列表:
[k, d[k]]
如果键名很长,提前赋值给变量是最优解:
long_key = 'very_long_and_complex_key_name' # 生成单键字典 single_pair_dict = {long_key: d[long_key]}
2. 针对字典合并的场景
你提到要把单个键值对合并到另一个字典并传给函数,原来的写法无法运行是因为d1['b']是值而非字典,推荐这几种简洁写法:
方法一:直接合并单键字典
key = 'b' # 合并后传入函数 func({**{key: d1[key]}, **d2})
方法二:Python 3.9+ 用字典合并运算符|
如果你的Python版本在3.9及以上,|运算符能更直观地合并字典:
key = 'b' func({key: d1[key]} | d2)
注意:若d2中存在同名键,{key: d1[key]} | d2会用新值覆盖旧值;如果要保留d2的原有值,调换顺序写成d2 | {key: d1[key]}即可。
方法三:直接解包给函数(适配关键字参数场景)
如果func本身支持接收关键字参数(而非单个字典参数),可以直接解包两个字典:
key = 'b' func(**{key: d1[key]}, **d2)
这样会把两个字典的所有键值对作为关键字参数传给func。
补充说明
你说得完全正确——用推导式遍历整个字典完全没必要,字典的核心优势就是O(1)的键查找效率,直接通过键取值生成目标结构才是最高效的选择。
内容的提问来源于stack exchange,提问作者MikeP
相关产品推荐
相关产品推荐

