我如何 return 列表中值的字典?

How do I return a dictionary of values from a list?

如何编辑被注释掉的代码,使其returns成为一个包含重复数字的字典而不是返回“{}”?

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)

这是一个解决方案。

如果列表中有多个元素 listOfElems.count(x) > 1,并且我们的重复列表中不包含元素 duplicates.count(x) == 0,那么我们可以将元素添加到重复列表。

listOfElems = ["a", "c", "c"]


def checkIfDuplicates_3(listOfElems):
    duplicates = []
    for x in listOfElems:
        if listOfElems.count(x) > 1 and duplicates.count(x) == 0:
            duplicates.append(x)
    return duplicates


# test
test = [listOfElems]

for t in test:
    output = checkIfDuplicates_3(t)
    print("The duplicate in", t, "is", output)

我不明白你为什么需要在这里使用字典。您没有键或值。您要做的只是 return 一个在列表中重复的字母。

以下代码使用列表理解来解决您的问题。 首先我们调用这个函数传入listOfElems。 然后我们将遍历给定的列表并检查每个元素的出现。我们可以使用 count 来做到这一点。看来你也用过。如果一个字母出现不止一次,我们会将该字母附加到一个新列表中。

在您提供的示例中,我们最终会得到这样的结果, ['c','c']。如果 c 只出现一次就好了。为了解决这个问题,我们可以使用 set,这会给我们 {'c'},这非常好。 为了完成这一切,我们 return 将其设置为列表。

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))

使用 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))

请注意,集合可能不会保留插入顺序。要获得有序输出,请使用 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}(参见上面的排序说明)。