if group not in g:
g[group] = set()
g[group].add(name)
浏览具有此结构的组列表:
Group: A
Name: Bob
并将属于特定组的人员的姓名添加到集合中。集合中的名称是唯一的,我们不知道组中有多少相似的名称。所以例如如果有两个'Bob'名称或5'Mike'名称,我如何计算名称的多次出现以及具有以下内容:
Group A: Bob 2, Mike 5
Group B: Jane 4
等等。提前谢谢。
答案 0 :(得分:34)
看起来使用Counter可能会更好:
>>> from collections import Counter
>>> mylist = ["Bob", "Mike", "Bob", "Mike", "Mike", "Mike", "Bob"]
>>> Counter(mylist)
Counter({'Mike': 4, 'Bob': 3})
答案 1 :(得分:5)
使用dicts的词典进行计数,例如如下:
tralala = dict()
for group, name in [('A', 'Bob'), ('B', 'Jane'), ('A', 'Bob')]:
tralala.setdefault(group, dict()).setdefault(name, 0)
tralala[group][name] += 1
print tralala
这导致
{'A': {'Bob': 2}, 'B': {'Jane': 1}}
答案 2 :(得分:-2)
from collections import Counter, defaultdict
lst = [('B', 'Bob'), ('A', 'Andy'), ('C', 'Charles'), ('A', 'Adam'), ('B', 'Abraham')]
# assumes people can appear in more than one group
def groups(lst):
counter = Counter(lst)
result = defaultdict(dict)
for (group, name), value in counter.iteritems():
result[group][name] = value
return result