【问题标题】:How Can I Count Repeat Characters in a Str如何计算字符串中的重复字符
【发布时间】:2013-04-23 02:20:38
【问题描述】:

我只是想知道如何计算str中ch中的重复,我写的函数是:

def repeat(s):
    '''
    '''
    count = 0 
    L = []

    for i in range(len(s)):
        count = 0
        if s[i] in s: 
         count = count + 1
        else:
             count = count

    L.append(count)
    return L

但是,如果字母相同,列表会重复。有没有更好的方法来计算 str 中的字符数量?我在想用字典?

【问题讨论】:

  • 这个函数应该为样本字符串返回什么?
  • 这个问题很难理解,这就是为什么到目前为止你有 2 个非常不同的答案。 s[i] in s 永远是真的。你的功能没有任何意义。通过描述您想要什么或修复您的功能以给出正确的结果来改进您的问题。我想知道在当前状态下谁支持这个问题。

标签: python string python-3.x


【解决方案1】:

计算字符串中的字符数如下:

len(my_str)

所以如果你想计算重复字符的数量,那就是

len(my_str) - len(set(my_str))

这相当于:

total number of characters - 唯一字符数。

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    这个问题目前有点不清楚,但如果你想计算每个字符在字符串中出现的次数,这会起作用:

    >>> from collections import Counter
    >>> char_counts = Counter(s)
    

    例子:

    >>> d = Counter("Chris Doggett")
    >>> for k, v in d.iteritems():
    ...    print k, v
      1
    C 1
    e 1
    D 1
    g 2
    i 1
    h 1
    o 1
    s 1
    r 1
    t 2
    
    >>> print d
    Counter({'g': 2, 't': 2, ' ': 1, 'C': 1, 'e': 1, 'D': 1, 'i': 1, 'h': 1, 'o': 1, 's': 1, 'r': 1})
    

    Counter 基本上会给你一个可迭代的字典,其中每个项目作为键,该键出现的次数作为值。

    如果您只想要多次显示的字符列表,这是一个简单的列表推导:

    >>> [k for k in d if d[k] > 1]
    ['g', 't']
    

    【讨论】:

      猜你喜欢
      • 2016-05-20
      • 1970-01-01
      • 1970-01-01
      • 2014-11-01
      • 2017-07-09
      • 1970-01-01
      • 2018-02-09
      • 2016-07-01
      • 1970-01-01
      相关资源
      最近更新 更多