【问题标题】:How to count occurrence of alphabet in python?如何计算python中字母的出现次数?
【发布时间】:2022-01-20 23:47:37
【问题描述】:

我编写了一个自定义 python 代码来计算某个字母在某个字母之后出现的次数。例如,就我而言,我有一个字符串“ABACCD”。现在我想找到从字母“A”开始,在我的字符串中,它后面跟着多少次“B”,后面跟着多少次“C”等等。对于“B”也是如此,有多少时间跟在“A”之后,多少次跟在“B”之后,多少次跟在“C”之后。所以输出会是这样的:如果我的字母表是“A”,它后面跟着“A”零次,后面跟着“B”1次,后面跟着“C”1次,后面跟着“D” “0次。 我编写的代码只返回一个 1 列表。这是我的代码:

s = "ABACCD"
a = []

for i in s:
    if(i=="A"):
        for j in s:
            a_count = 0
            if(j=="A"):
                a_count+=1
                a.append(a_count)
print(a)

任何帮助将不胜感激。谢谢

【问题讨论】:

  • 由于我不清楚您的要求是什么,请您重写您的问题,以便显示您想要的输出(或两个)与实际输出吗?
  • 计算所有对数的简单方法:from collections import Counter; print(Counter(zip(s, s[1:])))

标签: python string


【解决方案1】:

最好使用字典而不是列表来跟踪所有出现的字母对

1.使用字典的基本 Python

cnts = {}
for a, b in zip(s, s[1:]):
    cnts[(a,b)] = cnts.get((a, b), 0) + 1

print(cnts) # {('A', 'B'): 1, ('B', 'A'): 1, ('A', 'C'): 1, ('C', 'C'): 1, ('C', 'D'): 1}

2。没有 zip 的基本 Python

cnts = {}
i = 0
while i < len(s) - 1:
    a = s[i]
    b = s[i+1]
    cnts[(a,b)] = cnts.get((a, b), 0) + 1
    i += 1    
print(cnts)
#{('A', 'B'): 1, ('B', 'A'): 1, ('A', 'C'): 1, ('C', 'C'): 1, ('C', 'D'): 1}

3.使用 collections.Counter 的解决方案

from collections import Counter
cnts = Counter(zip(s, s[1:]))
print(cnts) 
#Counter({('A', 'B'): 1,
          ('B', 'A'): 1,
          ('A', 'C'): 1,
          ('C', 'C'): 1,
          ('C', 'D'): 1})

【讨论】:

    猜你喜欢
    • 2013-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多