计算一个s中的多次出现次数

2024-05-19 03:20:33 发布

您现在位置:Python中文网/ 问答频道 /正文

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

等等。提前谢谢。


Tags: namein名称add列表if人员group
3条回答

看来你最好用Counter

>>> from collections import Counter
>>> mylist = ["Bob", "Mike", "Bob", "Mike", "Mike", "Mike", "Bob"]
>>> Counter(mylist)
Counter({'Mike': 4, 'Bob': 3})

使用听写进行计数,例如:

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


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

相关问题 更多 >

    热门问题