鉴于:
[['x','a'], ['y','b'], ['z','a']]
我想要一个元素列表和第二个元素的计数频率:
[['x','a',2], ['y','b',1], ['z','a',2]]
>>> from collections import Counter
>>> L = [['x','a'], ['y','b'], ['z','a']]
>>> freq = Counter(y for x, y in L)
>>> [[x, y, freq[y]] for x, y in L]
[['x', 'a', 2], ['y', 'b', 1], ['z', 'a', 2]]
像往常一样,collections.Counter
来救援。
你可以这样做:
from collections import Counter
pairs = [['x','a'], ['y','b'], ['z','a']]
counts = Counter(b for a,b in pairs)
pairs_with_counts = [[a, b, counts[b]] for a,b in pairs]
使用字典的替代解决方案:
mylist = [['x','a'], ['y','b'], ['z','a']]
d = {}
for (a, b) in mylist:
try:
d[b] += 1
except KeyError:
d[b] = 1
mynewlist = [[a, b, d[b]] for (a, b) in mylist]
print(mynewlist)
输出是[['x', 'a', 2], ['y', 'b', 1], ['z', 'a', 2]]