Python 2.7
数据结构是这样的
hitdict = {'A':[1,2,3,4], 'B':[2,3,6,5], 'C':[2,3,7,8]}
注意键:值对是可变的。 我要A,B,C的交点:
^{pr2}$对于两个或多个列表的交集,大多数答案建议使用set class或lambda函数。 例如intersection of lists of list,使用lambda functions
从前面的question,其中a,b,c
是列表
>> set(a) & set(b) & set(c)
我有很多这样的字典,列表的数目是可变的。在
我的主要困惑是如何使用上面的set(),因为
如果我将for循环与hitdict.items()
一起使用,它一次只能给出一个k:v对。因此下面的代码是不正确的。在
for (k,v) in hitdict.items():
common = set(hitdict[k]) + set(hitdict[k+1])
如何在Python中实现这一点?在
使用
map
将列表转换为集合,使用reduce
应用交集。执行:它提供:
^{pr2}$你可以做点什么比如:在
您可以使用
reduce
,与自定义lambda
并设置intersection
来完成此操作:请注意,上面的生成器还可以确保您的项目是一个接一个地喂,以减少。在
相关问题 更多 >
编程相关推荐