我有两个 python 字典,如果键之间没有任何共同值,我想返回字典键的组合。 有点像:
- 对于“a”中的 i:
- 对于“b”中的 j:
- 对于 i.items():
- 如果any.i.items()在any.j.items()中
- 继续
- 否则告诉我如何将所有组合配对在一起
假设我的代码如下所示:
a={'dog':['hungry','fun'],'cat':['ugly','old'],'fish':[1,2,'hungry',4]}
b={'raccoon':['ugly',1,3,], 'bird':[18,'hungry'],'cat':['orange','short']}
这将返回
dog+raccoon, dog+cat, cat+bird, cat+cat, fish+cat
因为这些潜在的配对都没有共同的字典值。如果有人能告诉我如何做到这一点,我将不胜感激。
最佳答案
您可以使用集合:
from itertools import product
pairs = set()
for (ak, av), (bk, bv) in product(a.items(), b.items()):
if not set(av).intersection(set(bv)):
pairs.add("%s+%s" % tuple(sorted([ak, bk])))
print pairs
产生:
set(['bird+cat', 'cat+fish', 'cat+cat', 'cat+dog', 'dog+raccoon'])
如果您首先使用的是集合而不是列表,这可能会更有效。
关于python - 检查Python字典值是否在另一个字典的值中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24948721/