如何匹配字典列表与嵌套列表并提取connection值?
解决方法
首先注意:你写的object1里的元素是集合(大括号包裹无键值关系),但根据需求应该是字典(键值对用冒号分隔),这很可能是你匹配失败的核心原因。先修正object1的格式:
# 修正后的object1:每个元素为单个键值对的字典 object1 = [ {'samplekey': 'samplevalue'}, {'samplekey1': 'samplevalue1'}, {'samplekey2': 'samplevalue2'} ] object2 = [ ["samplekey", "samplevalue", {"connection": "Direct"}], ["samplekey1", "samplevalue1", {"connection": "Cross"}] ]
高效匹配方案
先把object2转换成以(key, value)为键的查找字典,避免嵌套循环,提升查找效率:
# 构建object2的查找映射 connection_map = {} for item in object2: key, val, conn_info = item connection_map[(key, val)] = conn_info['connection'] # 遍历object1提取对应connection值 for obj in object1: # 取出字典中的唯一键值对(假设每个字典只有一组键值) key, val = next(iter(obj.items())) # 查找并输出结果,无匹配时返回默认提示 conn = connection_map.get((key, val), "无匹配项") print(f"键{key}对应connection: {conn}")
运行结果
键samplekey对应connection: Direct 键samplekey1对应connection: Cross 键samplekey2对应connection: 无匹配项
补充说明
- 如果
object1中的字典可能包含多个键值对,需根据实际需求调整逻辑(比如指定匹配特定的键)。 - 使用
connection_map.get()可以处理object1中无匹配项的情况,避免抛出KeyError。
内容的提问来源于stack exchange,提问作者CodeDebagger
相关产品推荐
相关产品推荐

