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