我有以下代码:
def getresult (someset):
result = []
index = 0
for key, value in mydict.items():
if someset.issubset(value):
result.append(key)
while (len(result)<10):
index = index+1
someset = someset[index:]
getresult(someset)
return result
我的想法是,我想知道someset是否是某个列表的子集。如果不是,我想切片,直到得到结果(如果它到达集合只包含一个元素的点,结果必然会被找到,所以无限循环不应该是一个问题在这里。)
上面的代码给出了一个错误:TypeError:&#39; set&#39;对象没有属性&#39; getitem &#39; 我认为,这意味着我不应该在切片中使用变量名。
答案 0 :(得分:0)
在阅读了所有人的评论之后,我意识到有一种更简单的方式来获得我想要的结果。
对于子孙后代,这里是:
for key, value in mydict.items():
for i in someset:
if i in value:
mylist.append(key)
然后,我可以简单地使用一个计数器从我的列表中创建一个频率字典,并列出具有最高值的键:
tmpdict = Counter(mylist)
finallist = [i for (i,j) in tmpdict.items() if j >= 2]
#if j >=2, then k originally had more than 2 elements of someset as a value