是否可以在python中增加切片?

时间:2014-11-01 23:47:57

标签: python slice

我有以下代码:

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; 我认为,这意味着我不应该在切片中使用变量名。

  • 是否可以增加切片?
  • 如果没有(或者如果你认为切片不会得到我无论如何都会得到的结果),还有另一种方法可以遍历一个集合,在每个循环中忽略一个元素吗?

1 个答案:

答案 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