正确顺序的计数列表
List of Counts in the Correct Order
对于列表:
names=['fred', 'fred', 'fred', 'bill', 'bill', 'ted', 'ted', 'ted', 'ted']
我想要return每个名字的计数列表:
desired_list=[3,2,4]
请注意,每个名称的数量与列表中的顺序相同 'names'。
我试过的代码:
输入:
name_count=[names.count(x) for x in set(names)]
输出:
[4, 3, 2]
......但是顺序错了。它应该是 [3,2,4]...与名称列表中名称的顺序相同。
from collections import Counter
names = ['fred', 'fred', 'fred', 'bill', 'bill', 'ted', 'ted', 'ted', 'ted']
print(list(Counter(names).values()))
[3, 2, 4]
使用 itertools
中的 groupby
和列表理解的另一个选项是:
from itertools import groupby
names=['fred', 'fred', 'fred', 'bill', 'bill', 'ted', 'ted', 'ted', 'ted']
res = [len(list(g[1])) for g in groupby(names)]
print(res)
哪个returns:
[3, 2, 4]
对于列表:
names=['fred', 'fred', 'fred', 'bill', 'bill', 'ted', 'ted', 'ted', 'ted']
我想要return每个名字的计数列表:
desired_list=[3,2,4]
请注意,每个名称的数量与列表中的顺序相同 'names'。
我试过的代码: 输入:
name_count=[names.count(x) for x in set(names)]
输出:
[4, 3, 2]
......但是顺序错了。它应该是 [3,2,4]...与名称列表中名称的顺序相同。
from collections import Counter
names = ['fred', 'fred', 'fred', 'bill', 'bill', 'ted', 'ted', 'ted', 'ted']
print(list(Counter(names).values()))
[3, 2, 4]
使用 itertools
中的 groupby
和列表理解的另一个选项是:
from itertools import groupby
names=['fred', 'fred', 'fred', 'bill', 'bill', 'ted', 'ted', 'ted', 'ted']
res = [len(list(g[1])) for g in groupby(names)]
print(res)
哪个returns:
[3, 2, 4]