Python 个字符计数器列表
Python character counter to list
我有一个包含字符的列表
chars = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '-']
然后是计数器对象
from collections import Counter
s = 'testing'
counter = Counter(s)
print(counter)
>>> Counter({'t': 2, 'e': 1, 's': 1, 'i': 1, 'n': 1, 'g': 1})
如何从此 Counter
对象中获取与 chars
列表具有相同顺序和长度的列表?输出列表将包含整数,因此如果字符串不包含该字符,则会出现 0
.
您可以使用以下列表理解:
>>> [counter.get(c, 0) for c in chars]
[0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0]
可以没有计数器。至少对于长字符串,它更快(短字符串不记得了):
[*map(s.count, chars)]
试试这个:
list(map((lambda x : counter.get(x) if x in counter else 0), chars))
我有一个包含字符的列表
chars = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '-']
然后是计数器对象
from collections import Counter
s = 'testing'
counter = Counter(s)
print(counter)
>>> Counter({'t': 2, 'e': 1, 's': 1, 'i': 1, 'n': 1, 'g': 1})
如何从此 Counter
对象中获取与 chars
列表具有相同顺序和长度的列表?输出列表将包含整数,因此如果字符串不包含该字符,则会出现 0
.
您可以使用以下列表理解:
>>> [counter.get(c, 0) for c in chars]
[0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0]
可以没有计数器。至少对于长字符串,它更快(短字符串不记得了):
[*map(s.count, chars)]
试试这个:
list(map((lambda x : counter.get(x) if x in counter else 0), chars))