计数(XS): 考虑一系列值xs。它可以包含重复项,我们想知道如何 每个现有价值都有很多。构造并返回一个字典,其键是找到的东西 在序列中,其对应的值是计数 事件发生。
XS ::值序列。 (它可以是列表,字符串或其他东西......)
返回值:事物字典及其在xs中的出现次数。
示例:
counts([1,1,1,2,3,3,3,3,5]) → {1: 3, 2: 1, 3: 4, 5: 1} counts("abracadabra") → {'r': 2, 'd': 1, 'c': 1, 'b': 2, 'a': 5}
def counts(xs):
for x in xs:
return {x: xs.count(x)}
counts(xs)
答案 0 :(得分:0)
有很多方法可以做到这一点。最简单的方法是迭代列表一次,为列表中的每个值添加一个计数器。
from collections import defaultdict
def counts(start_list):
num_dict=defaultdict(int)
for val in start_list:
num_dict[val] += 1
print num_dict
print
counts([1,1,1,2,3,3,3,3,5])
counts("abracadabra")
答案 1 :(得分:0)
这似乎对我有用,并且与问题中给出的内容非常接近。迭代所有项目后不得不返回(不仅仅是for循环中的第一项)。另外,如果我在列表中有两个位置,我将在字典中添加两次(第二次添加覆盖第一个),但这对我们来说并不重要。它还假设所有可迭代的给定(xs)都有一个要调用的count方法。
def counts(xs):
d = {}
for item in xs:
d[item] = xs.count(item)
return d
if __name__== "__main__":
print counts([1,1,1,2,3,3,3,3,5])
print counts("abracadabra")