如何从字典数组中获取与指定数组值匹配的键对应的值?
嘿,这问题我之前也帮人解答过,给你几个实用的思路哈~
核心思路:匹配键与数组元素
我们要做的就是逐个检查b里每个字典的键,看看是不是在a的元素里,要是匹配上了就把对应的值捞出来。这里有两种常见实现方式:
1. 直观遍历法(适合新手理解)
先把a转成集合(集合的存在性检查比列表快很多,尤其是当a元素多的时候),然后遍历b里的每个字典,再遍历字典的键值对,符合条件的就加入结果列表:
a = [1,2,3] b = [{2:"a"},{3:"b"},{45:"r"},{16:"a"}] # 转集合提升检查效率 a_set = set(a) matched_values = [] for dic in b: # 遍历每个字典的键值对 for key, val in dic.items(): if key in a_set: matched_values.append(val) print(matched_values) # 输出:['a', 'b']
2. 简洁列表推导式(一行搞定)
如果你喜欢更紧凑的写法,用嵌套列表推导式就能完成,逻辑和上面是一样的:
a_set = set(a) matched_values = [val for dic in b for key, val in dic.items() if key in a_set]
小提醒
- 要是
b里的字典有多个键(比如某个字典是{2:"a", 3:"c"}),上面的方法也能把所有符合条件的值都收集到结果里。 - 转集合这步不是必须的,但当
a的元素数量大的时候,能明显提升代码运行效率,建议养成这个习惯~
内容的提问来源于stack exchange,提问作者Eric Russo
相关产品推荐
相关产品推荐

