【问题标题】:Counting the occurrence of a character of an input string in python 3.6在python 3.6中计算输入字符串的字符出现次数
【发布时间】:2018-06-15 01:59:54
【问题描述】:

我需要输入一个字符串,每个字符只计算一次字符的出现次数(不应为同一个字符重复)并将其打印在列表或集合或元组中。但我没有得到想要的结果。

代码:

string1 = input('Enter your string: ')


for letter in string1:

    string2 = string1.count(letter,0)

    ss = str(string2)

    print(ss)

输出:

Enter your string: ggddg
3
3
2
2
3

【问题讨论】:

  • 想要的输出是什么?
  • 更准确地解释您的需求。
  • 它应该只打印一次字母的出现次数,并且应该将它们全部打印在列表或元组中或设置@OlivierMelançon
  • @OlivierMelançon 抱歉,从现在开始我会牢记这一点。

标签: python string python-3.x count


【解决方案1】:

根据您希望输出的外观,您可以使用collections.Counter,它具有类似字典的界面:

from collections import Counter

user_input = input('Enter your string: ')
counts = Counter(user_input)

print(counts)  # prints: Counter({'g': 3, 'd': 2})

【讨论】:

    【解决方案2】:

    您打印的每个不同字符的计数与它们在字符串中出现的次数一样多。首先是g,有3 个gs,所以你打印3,然后另一个g 来了,你数数并再次打印。我想你想打印有 3 个“g”和 2 个“d”。

    试试这个:

    letters = {}
    for c in input("Enter your string: "):
        if c not in letters:
            letters[c] = 1
        else:
            letters[c] += 1
    
    print(letters)
    

    输出:

    Enter your string: ggddg
    {'g': 3, 'd': 2}
    

    【讨论】:

    • 最容易理解的答案!谢谢你:)
    【解决方案3】:

    我想这就是你想要的,用示例用户字符串试试吧

    #!python3
    
    # sample user string: fdshjkfdskhjlfdsjklfdsevcxzm,.czxm,.
    
    user_string = input('Enter your string: ')
    
    all_letters = []
    unique_letters = []
    
    for letter in user_string:
        all_letters.append(letter)
    
    for unique in all_letters:
        if unique in unique_letters:
            pass
        else:
            unique_letters.append(unique)
    
    for item in unique_letters:
        print(item + ' = ' + str(all_letters.count(item)))
    
    # results
    '''
    f = 4
    d = 4
    s = 4
    h = 2
    j = 3
    k = 3
    l = 2
    e = 1
    v = 1
    c = 2
    x = 2
    z = 2
    m = 2
    , = 2
    . = 2
    '''
    

    【讨论】:

      【解决方案4】:

      @Mahesh,使用setdictionary 可以有效地计算字符串中字符的出现次数,如下所示。

      通过http://rextester.com/KQV63040在线试用。

      注意:我使用json 模块来漂亮地打印字典。

      您可以使用collections 模块的OrderedDict 来根据插入保留字典中键的顺序。

      import json
      
      string1 = input('Enter your string: ').strip()
      
      unique_letters = set(string1)
      letters_occurrences = {}
      
      for letter in unique_letters:
          letters_occurrences[letter] = string1.count(letter)
      
      print() # newline
      
      # Pretty printing the dictionary
      print(json.dumps(letters_occurrences, indent=4))
      

      » 输出

      Enter your string: abbacddabbc
      
      {
          "b": 4,
          "a": 3,
          "d": 2,
          "c": 2
      }
      

      【讨论】:

        【解决方案5】:

        试试这个:

        string1 = input('Enter your string: ')
        print('\n'.join(list(set([i+' '+str(string1.count(i)) for i in string1]))))
        

        输出:

        Enter your string: aaabbcca
        c 2
        a 4
        b 2
        

        或者试试这个:

        string1 = input('Enter your string: ')
        print('\n'.join(list(set(map(lambda x: x+' '+str(string1.count(x)),string1)))))
        

        输出:

        Enter your string: aaabbcca
        c 2
        a 4
        b 2
        

        【讨论】:

          【解决方案6】:

          您可以使用字典来存储该信息

          d = {} 
          
          for c in string1:
              try:
                  d[c] += 1
              except KeyError:
                  d[c] = 1
          print(d)
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-04-24
            • 1970-01-01
            • 2020-02-21
            • 2012-02-12
            • 1970-01-01
            相关资源
            最近更新 更多