比较不同词典中的列表并匹配相似性

时间:2019-06-17 02:16:18

标签: python list dictionary compatibility

我想比较属于不同词典的列表,如果有相似之处就打印

dictionary = { 'C1' : [10,20,30], 'C2' : [20,30,40]}
dictionarya = { 'S1' : [10,21,31], 'S2' : [22,32,42]}

print ('You have...')
for f, v in zip(dictionary, dictionarya):
    for x, y in zip(f, v):
        if x == y:
            print (x)
            break
else:
      print ('no similarities')

我希望将C1的10匹配到S1的10。

2 个答案:

答案 0 :(得分:0)

您可以将此生成器表达式与包含两个zip和一个if语句以及一个next的嵌套迭代一起使用:

print(next((str(a) + ', ' + str(x[0]) + ', ' + str(y[0]) for x, y in zip(dictionary.items(), dictionarya.items()) for a, b in zip(x[1], y[1]) if a == b), 'no similarities'))

输出:

10, C1, S1

但是如果没有匹配项,因为我有next,它将输出:

no similarities

答案 1 :(得分:0)

要扩展U9-Forward代码显示的内容:问题是,当您对2个字典进行zip()压缩时,字典键是压缩的。您追求的是价值。

此外,else:将始终运行,因此您需要某种标记来跟踪是否找到任何匹配的值。