一個=「人人生而憲法的權力下平等,托馬斯·傑斐遜」計數的字母總數字符串
我知道a.count(「A」)將返回多少「A」有。但我想要統計有多少A,E,C和T,並將它們加在一起。非常感謝。
進出口使用Python3
一個=「人人生而憲法的權力下平等,托馬斯·傑斐遜」計數的字母總數字符串
我知道a.count(「A」)將返回多少「A」有。但我想要統計有多少A,E,C和T,並將它們加在一起。非常感謝。
進出口使用Python3
查找到collections.Counter
:
>>> from collections import Counter
>>> import string
>>> c = Counter(l for l in a if l in string.ascii_letters)
>>> c
Counter({'e': 11, 't': 6, 'o': 6, 'r': 5, 'n': 5, 'a': 4, 'l': 3, 'f': 3,
's': 3, 'u': 3, 'h': 3, 'i': 2, 'd': 2, 'c': 2, 'm': 2, 'A': 1,
'p': 1, 'w': 1, 'T': 1, 'J': 1, 'q': 1})
>>> sum(c.values())
66
>>> c = Counter(l for l in a if l in 'AecT')
>>> c
Counter({'e': 11, 'c': 2, 'A': 1, 'T': 1})
>>> sum(c.values())
15
你可以通過將'string.ascii_letters'存儲在一個集合 –
'sum(c [x] for x in('A','e','c','T'))''中得到一些改進,因爲OP想要「來統計有多少A,E,C和T,並將它們加在一起」 –
@JohnLaRooy確實,但樣本量太小 - 對於設置的裸露150μs,20μs太小。 – AChampion
Python有一個很好的模塊。使用計數器
from collections import Counter
a = "All men are created equal under the power of the constitution, Thomas Jefferson"
counter = Counter(a)
print(counter)
它會輸出一個所有字母的字典作爲關鍵字,值將是出現次數。
你可以使用正則表達式表達式來查找字母總數輕鬆
import re
p = re.compile("\w")
a = "All men are created equal under the power of the constitution, Thomas Jefferson"
numberOfLetters = len(p.findall(a))
將返回66
如果你只是想A,E,C和T,你應該使用這個表達式代替:
p = re.compile("[A|e|c|T]")
將返回15
只是用另一種方法嘗試
map(lambda x: [x, a.count(x)], 'AecT')
'a'是輸入字符串。 'AecT'可以根據需要用所需的字母替換。
重複''a''有點令人困惑,並且計數'a'會包括標點符號,所以改爲OP的請求(或者可以使用'string.ascii_letters'作爲字母) – AChampion
你需要分別計算每個字母還是隻計算總數? – digitaLink