python - 检查Python字典值是否在另一个字典的值中

标签 python loops for-loop dictionary

我有两个 python 字典,如果键之间没有任何共同值,我想返回字典键的组合。 有点像:

  1. 对于“a”中的 i:
  2. 对于“b”中的 j:
  3. 对于 i.items():
  4. 如果any.i.items()在any.j.items()中
  5. 继续
  6. 否则告诉我如何将所有组合配对在一起

假设我的代码如下所示:

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/

相关文章:

arrays - 在 plpgsql 中循环遍历数组维度

python - '类型错误 : Not implemented for this type' when trying to make a Scatter plot in matplotlib

javascript - 当查找具有特定属性的对象时,是否有类似 LINQ 的替代方法可以替代 JavaScript 中的循环?

php - 使用 PHP (DOM) 遍历未知的 XML 结构

python - 根据 for 循环中的迭代次数向列表添加不同的值

javascript - if 语句中的 && 运算符与 for in 循环没有给出正确的答案

python - 有条件地将 DataFrame 中的 Int64 字段替换为 Int64 字段的月份加上 Datetime64[ns] 字段

python - 当时间序列中的下一个值较大时过滤数据

每个函数的python时间测量

excel - 在一个数组中找到 2 个元素,它们在一个简单的方程中给出一个目标结果