在Python中可以递增切片吗?
我有一段代码:
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: 'set' object has no attribute 'getitem'。我猜这意味着我不应该在切片中使用变量名。
- 切片可以递增吗?
- 如果不行(或者你觉得切片根本无法得到我想要的结果),有没有其他方法可以遍历一个集合,每次循环时忽略一个元素?
1 个回答
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