def find_duplicates(inputList, occurrences, errorMessage):
'''find_duplicates(inputList, occurrences) -> Finds and returns all duplicates in list l
which occur at least 'occurrences' times
If none are found then errorMessage is returned'''
curr = 0
prev = 0
occurrencesFound = 0
duplesFound = []
inputList = sorted(inputList)
print(inputList)
for i in range(len(inputList)):
prev = curr
curr = inputList[i]
occurrencesFound[curr] = 0
if curr == prev and duplesFound.count(curr) == 0:
occurrencesFound[curr] += 1
if occurrencesFound[curr] == occurrences:
duplesFound.append(curr)
occurrencesFound = 0
if duplesFound == []:
duplesFound = errorMessage
return duplesFound
这是我编写的python3代码,用于返回列表中出现“出现”次的所有值,如果没有找到,则显示所选的错误消息。不过,我得到的是:
^{pr2}$我能看出什么是错误,但我不确定。我要做的是对列表中的每个不同值有一个单独的出现次数。例如,如果我有一个列表[2,2,5,7,7,7,7,8,8,8],我希望occurrencesFound[2]结束为2,occurrencesFound[5]结束为1,occurrencesFound[7]结束为4,依此类推。在
这样,代码将检查是否有任何数字至少出现了用户要求的次数,然后返回所有发生的数字。不过,我用的方法效果并不好。。。在
我想知道的是为什么这是一个错误,以及我可以如何修复它。我试着用occurrencesFound(curr)来代替,但效果并不好。然而,这个问题在"TypeError: 'function' object does not support item assignment"中得到了回答。有什么想法吗?在
您将
occurrencesFound
设置为int(0
),然后尝试将其用作列表(occurrencesFound[curr] = 0
)。这就是问题所在。如果要在occurrencesFound
中存储不同实体的出现,请按如下方式使用它:这将创建count(int)变量的字典,其中
curr
是键。在正如其他人所提到的,您的代码中存在严重的不一致性:您试图将
occurrencesFound
同时用作整数和列表。在在列表中查找重复项组的简单方法是使用标准模块函数^{} 。您的
find_duplicates
接受一个errorMessage
参数,但我建议在调用代码中而不是在查找组的函数中进行错误处理更为简洁。在My
find_duplicates
收集dict
中的组,这比使用list
更灵活,因为它可以用于各种类型的元素,而不仅仅是整数。即使你只是收集一组整数,dict
仍然比list
好,除非这些整数保证是大致连续的,最低的整数接近于零(非负)。在输出
^{pr2}$您已将occurancesFound设置为整数数据类型:
无法为其分配项,因为它是整数。在
如果要为其分配项目,请将其设为dict:
^{pr2}$相关问题 更多 >
编程相关推荐