如何匹配列表和字典列表中的两个条目?



我有两个对象:字典列表:

object1 = [{'samplekey', 'samplevalue'}, {'samplekey1', 'samplevalue1'}, {'samplekey2', 'samplevalue2'},]

和一个不同对象的列表:

object2 = [["samplekey", "samplevalue", { "connection": "Direct"}],["samplekey1", "samplevalue1",{ "connection": "Cross"}]]

我的任务是为每个object1在object2中找到合适的匹配并获得连接值。如何找到他们?

我尝试了不同的for循环和if语句,但没有工作

您可以将object2中每个项目的前2个元素转换为set,如果需要更改长度则使用len(o1):

object1 = [
{'samplekey', 'samplevalue'},
{'samplekey1', 'samplevalue1'},
{'samplekey2', 'samplevalue2'},
{'samplekey3', 'samplevalue3', 'samplevalue3'},
]
object2 = [["samplekey", "samplevalue", {
"connection": "Direct"
}], ["samplekey1", "samplevalue1", {
"connection": "Cross"
}], ["samplekey3", "samplevalue3", "samplevalue3", {
"connection": "33333"
}]]
for o1 in object1:
for o2 in object2:
if set(o2[:(len(o1))]) == o1:
print(o2[-1]['connection'])

:

Direct
Cross

您可以使用嵌套的for循环来查找匹配的对象并获得连接值。外部循环将遍历object1的元素,内部循环将遍历object2的元素。对于object1中的每个元素,可以使用"if"语句检查samplekey"Value匹配object2中元素的第一个元素。如果找到匹配项,则可以从object2中匹配元素的嵌套字典中检索连接值。下面是一个示例代码:

object1 = [{'samplekey': 'samplevalue'}, {'samplekey1': 'samplevalue1'}, {'samplekey2': 'samplevalue2'},]
object2 = [["samplekey", "samplevalue", { "connection": "Direct"}],["samplekey1", "samplevalue1",{ "connection": "Cross"}]]
for obj1 in object1:
key = list(obj1.keys())[0]
val = list(obj1.values())[0]
for obj2 in object2:
if key == obj2[0] and val == obj2[1] :
connection = obj2[2]['connection']
print(connection)

值得注意的是,问题的表述有一点模棱两可,因为第一个对象是集合列表而不是字典列表,但无论如何,上面的代码应该可以工作。

最新更新