如何编辑注释掉的代码,使其返回重复数字的字典而不是返回“{}”?
listOfElems = ["a", "c", "c"]
def checkIfDuplicates_3(listOfElems):
duplicates = {}
for x in listOfElems:
# duplicates = ??
if listOfElems.count(x) > 1:
return duplicates
return duplicates
#test
test = [listOfElems]
for t in test:
output = checkIfDuplicates_3(t)
print("The duplicate in", t, "is", output)
答案 0 :(得分:1)
我不明白你为什么需要在这里使用字典。您没有键或值。您要做的就是返回一个在列表中重复的字母。
以下代码使用列表理解来解决您的问题。
首先我们调用这个传入 listOfElems
的函数。
然后我们将遍历给定的列表并检查每个元素的出现次数。我们可以使用 count
来做到这一点。看来你也用过。如果一个字母出现不止一次,我们会将该字母附加到一个新列表中。
在您提供的示例中,我们最终会得到这样的结果,
['c','c']
。如果 c
只出现一次就好了。为了解决这个问题,我们可以使用 set
,它会给我们 {'c'}
,这非常好。
为了完成这一切,我们将这个集合作为一个列表返回。
listOfElems = ["a", "c", "c"]
def checkIfDuplicates_3(listOfElems):
dups = [x for x in listOfElems if listOfElems.count(x) > 1]
return list(set(dups))
print("The duplicates in", listOfElems, "are", checkIfDuplicates_3(listOfElems))
答案 1 :(得分:0)
这是一个解决方案。
如果列表中有多个元素highMax = max(readDF['Matching?'][i-11:i])
getDateMax = readDF['Matching?'].index(highMax)
if highMax < max(readDF['Matching?'][i-10:i+1]):
make_VarNames['Found'][i] = make_VarNames['Found'][i-1]
else:
make_VarNames['Found'][i] = readDF['Date'][getDateMax]
,并且我们的重复列表中不包含该元素listOfElems.count(x) > 1
,那么我们可以将该元素添加到列表中重复。
duplicates.count(x) == 0
答案 2 :(得分:0)
使用 set
和列表推导式单行函数可以:
listOfElems = ["a", "c", "c","e","c","e","f"]
def checkIfDuplicates_3(listOfElems): return set([x for x in listOfElems if listOfElems.count(x)>1])
#test
test = [listOfElems]
for t in test:
output = checkIfDuplicates_3(t)
print("The duplicate in", t, "is", sorted(output))
请注意,插入的顺序可能不会被 set 保留。要获得有序输出,请使用 sorted
(如上例所示)。
要获取计算出现次数的字典>1,您可以使用:
def checkIfDuplicates_3(listOfElems):
return {x:listOfElems.count(x) for x in set(listOfElems) if listOfElems.count(x)>1}
例如为 checkIfDuplicates_3(listOfElems)
返回结果 {'e': 2, 'c': 3}
(请参阅上面的订购说明)。