【问题标题】:(Python) How to count the number of letters in a word?(Python) 如何计算一个单词的字母个数?
【发布时间】:2018-05-10 13:59:35
【问题描述】:

我正在尝试创建一个程序,如果您输入一个单词,它将打印出该单词的每个字母以及该字母在该单词中出现的次数。

例如;当我输入“aaaarggh”时,输出应该是“a 4 r 1 g 2 h 1”。

def compressed (word):
    count = 0
    index = 0
    while index < len(word):
        letter = word[index]
        for letter in word:
            index = index + 1
            count = count + 1
            print(letter, count)
        break

print("Enter a word:")
word = input()
compressed(word)

到目前为止,它只是打印出单词中的每个字母和位置。 任何帮助表示赞赏,谢谢!

(不使用dict方法)

【问题讨论】:

标签: python string


【解决方案1】:

只需键入(对于 Python 2.7+):

import collections
dict(collections.Counter('aaaarggh'))

拥有:

{'a': 4, 'g': 2, 'h': 1, 'r': 1}

【讨论】:

    【解决方案2】:
    a="aaaarggh"
    d={}
    for char in set(a):
        d[char]=a.count(char)
    print(d)
    

    输出

    {'a': 4, 'h': 1, 'r': 1, 'g': 2}
    

    【讨论】:

      【解决方案3】:

      试试这个,你可以使用 counter 它会返回 dict 类型

      from collections import Counter
      print(Counter("aaaarggh"))
      

      【讨论】:

        【解决方案4】:

        使用dict 实现它的一种方法:

        def compressed(word):
            letters = dict()
            for c in word:
                letters[c] = letters.get(c, 0) + 1
            for key, value in letters.items():
                print(f'{value}{key}', end=' ')
        

        【讨论】:

          【解决方案5】:

          正如其他人所建议的,您可以使用 dict 轻松做到这一点!

          test_input = "aaaarggh"
          
          def compressed (word):
            letter_dict = {}
            for letter in test_input:
              if letter not in letter_dict:
                letter_dict[letter] = 1
              else:
                letter_dict[letter] = letter_dict[letter]+1
            return letter_dict
          
          print(compressed(test_input))
          

          输出:

          {'a': 4, 'r': 1, 'g': 2, 'h': 1}
          

          【讨论】:

          【解决方案6】:

          Counter 简洁。但这里有一个使用defaultdict 的替代方案,它是dict 的子类。

          from collections import defaultdict
          
          test_input = "aaaarggh"
          
          d = defaultdict(int)
          for letter in test_input:
              d[letter] += 1
          

          https://docs.python.org/3.6/library/collections.html#defaultdict-examples

          【讨论】:

            猜你喜欢
            • 2022-12-11
            • 2022-06-21
            • 2015-11-18
            • 1970-01-01
            • 2020-11-16
            • 1970-01-01
            • 2011-09-15
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多