我如何 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}
(参见上面的排序说明)。
如何编辑被注释掉的代码,使其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}
(参见上面的排序说明)。