我在休假多年后重新开始编程,但我无法解决这个问题。用户正在定义分类集数量,但 RasterValue 是长度为 N 的列表
例子: ClassificationSet = (1, 2, 3, 4, 5, 6) #defined by user
RasterVal = () #length = N
我使用 ClassificationSet 作为索引将项目存储到 RasterVal 中: RasterVal(ClassificationSet).add(导入值)
RasterVal(1) = 22,23,24,25,23,23,22
RasterVal(2) = 22,30,31,32,30,30
RasterVal(3) = 31
这是:RasterVal([],[22,23,24,25,23,23,22], [22,30,31,32,30,30], [31])
我想列出重复的值,但前提是它们在不同的集合中重复,而不是在同一个集合中重复。
输出应该是: 重复集 = 22, 31
非常感谢您的帮助。我已经能够比较这些集合,但它列出了重复的值,即使它们出现在同一个集合列表中也是如此。
请您参考如下方法:
@lukecampbell 是对的:
>>> lsts = [[22,23,24,25,23,23,22],[22,30,31,32,30,30],[31]]
>>> from collections import Counter
>>> c = Counter(x for lst in lsts for x in set(lst))
>>> [x for x,y in c.items() if y > 1]
[22, 31]
该算法的运行时间是线性的,而不是集合数量的二次方。
