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

Compare lists in different dictionaries and match similarities

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

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。

您可以将此生成器表达式与包含两个 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

扩展 U9-Forward 的代码显示的内容:问题是当您 zip() 这两个词典时,压缩的是字典键。您追求的是价值观。

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