我有一个不同长度的字典.每个条目都有一个名称和一个列表,如下所示:
somedict = {'Name': [1, 2, 3], 'Name2': [], 'Name3': [2,3] }
如何获得以下列表的交集?我需要动态地做,我不知道dict会有多长.
对于上面的列表,我知道交叉点是空的.但对于
somedict = {'Name': [1, 2, 3], 'Name3': [2,3] }
它应该回来
[2, 3]
thefourtheye.. 11
通常,交集是一个集合操作.因此,您可能希望将字典的值转换为集合,然后运行交集,就像这样
>>> set.intersection(*(set(values) for values in data.values())) {2, 3}
如果您希望结果为列表,只需将结果集转换为列表,如下所示
>>> list(set.intersection(*(set(values) for values in data.values()))) [2, 3]
这里,表达式*(set(values) for values in data.values())
创建一个生成器,它生成转换为集合的字典项的每个值,并将生成器解压缩到该set.intersection
函数.
通常,交集是一个集合操作.因此,您可能希望将字典的值转换为集合,然后运行交集,就像这样
>>> set.intersection(*(set(values) for values in data.values())) {2, 3}
如果您希望结果为列表,只需将结果集转换为列表,如下所示
>>> list(set.intersection(*(set(values) for values in data.values()))) [2, 3]
这里,表达式*(set(values) for values in data.values())
创建一个生成器,它生成转换为集合的字典项的每个值,并将生成器解压缩到该set.intersection
函数.