我想比较属于不同词典的列表,如果有相似之处就打印
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。
答案 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:
将始终运行,因此您需要某种标记来跟踪是否找到任何匹配的值。