字符串中的字符数

时间:2018-01-29 05:37:51

标签: python

def charcount(stri):
    for i in stri:
        count = 0
        for j in stri:
            if stri[i] == stri[j]:
                count += 1

我是python的新手,目前正在学习字符串操作,谁能告诉我这个程序有什么问题?该函数尝试打印给定字符串中每个字符的计数。

例如:string ="你身后有阴影" 我想计算每个角色在字符串中出现的次数

7 个答案:

答案 0 :(得分:5)

计算字符串中的字符可以使用Counter()类完成,如:

代码:

from collections import Counter

def charcount(stri):
    return Counter(stri)

print(charcount('The function try to print count of each character '
                'in given string . Please help'))

结果:

Counter({' ': 14, 'e': 7, 'n': 7, 't': 7, 'c': 5, 'i': 5, 
         'r': 5, 'h': 4, 'o': 4, 'a': 4, 'f': 2, 'u': 2, 
         'p': 2, 'g': 2, 's': 2, 'l': 2, 'T': 1, 'y': 1, 
         'v': 1, '.': 1, 'P': 1})

答案 1 :(得分:0)

这是你需要做的。迭代输入字符串并使用哈希来跟踪计数。在python中,基本哈希是一个字典。

def charCounter(string):
    d = {} # initialize a new dictionary
    for s in string:
        if s not in d:
            d[s] = 1
        else:
            d[s] += 1
    return d

print charCounter("apple") 
# returns {'a': 1, 'p': 2, 'e': 1, 'l': 1}

答案 2 :(得分:0)

您的解决方案只需稍加修改

首先你循环错误: -

看看:

def charcount(stri):
    d = {}
    for i in stri:

        if i in d:
            d[i] = d[i] +1
        else:
          d[i] = 1
    return d

print (charcount("hello")) #expected outpu

答案 3 :(得分:0)

对代码的反馈:

在这些方面:

for i in stri:
    count = 0
    for j in stri:

外部循环遍历stri中的每个字符,内部循环遍历stri中的每个字符。这就像列表中元素的笛卡尔积,在这里不是必需的。

其次,在这一行:

if stri[i] == stri[j]:

您正在通过其索引访问stri,但ij不是索引,它们是字符本身。因此,将它们视为索引在此处不起作用,因为字符不是列表的有效索引。如果您只想访问索引,可以使用range(len())

访问它们
for i in range(len(stri)):
    count = 0
    for j in range(len(stri)):
        if stri[i] == stri[j]:

或者,如果您想访问元素及其索引,可以使用enumerate()

说完这个,你的方法太复杂了,需要重做。您需要对角色进行分组并对其进行计数。使用嵌套循环在这里是过度的。

替代方法:

有很多更好的方法可以做到这一点,例如使用collections.Counter()和字典。这些数据结构非常适合计数。

因为它看起来像你在挣扎循环,我建议回到基础,然后尝试用字典来解决这个问题。

答案 4 :(得分:0)

计算字符串中的每个字符

>>> from collections import Counter
>>> string ="There is shadow behind you"
>>> Counter(string)
Counter({' ': 4, 'h': 3, 'e': 3, 'i': 2, 's': 2, 'd': 2, 'o': 2, 'T': 1, 'r': 
1, 'a': 1, 'w': 1, 'b': 1, 'n': 1, 'y': 1, 'u': 1})

答案 5 :(得分:0)

如果您不想使用任何导入:

def charcount(string):
        occurenceDict = dict()
        for char in string:
            if char not in occurenceDict:
                occurenceDict[char] = 1
            else :
                occurenceDict[char] += 1
        return(occurenceDict)

答案 6 :(得分:0)

您可以使用以下代码。
in_l = ','.join(str(input('Put a string: '))).split(',')
d1={}
for i in set(in_l):
    d1[i] = in_l.count(i)
print(d1)