如何从列表中返回值字典?

时间:2021-05-05 01:31:25

标签: python list dictionary edit

如何编辑注释掉的代码,使其返回重复数字的字典而不是返回“{}”?

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)

3 个答案:

答案 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}(请参阅上面的订购说明)。