在Python中创建一个计算字典中字母数的函数

时间:2018-05-27 04:53:29

标签: python

如何创建一个允许我输入单词的函数,它将执行以创建一个字典来计算代码中的单个字母。我希望它显示为字典,例如,通过输入' hello'它会显示{' e':1' h':1,' l':2,' o':1}

我还需要在函数中有两个参数,一个用于字符串,一个用于字典。这与"计算字母串中每个字母的频率不同而且#34;问题

例如,我想我必须以

开头
d = {}
def count(text, d ={}):

    count = 0
    for l in text:
      if l in d:
        count +=1
      else: 
        d.append(l)

    return count

但这是不正确的?我还需要通过编写text =""来设置文本的默认值。如果用户实际上没有输入任何单词?

此外,如果字典中已有现有值,我希望它添加到该现有列表中。如何实现?

此外,如果字典中已存在单词,那么您将如何添加到该列表中,例如dct = {' e':1' h':1,' l':2,' o':1}现在我在终端中运行>>> count_letters('你好',dct)结果将是{' e':2' h':2' l':4 ,':2}

3 个答案:

答案 0 :(得分:0)

如果您可以使用Pandas,则可以使用value_counts()

import pandas as pd

word = "hello"
letters = [letter for letter in word]
pd.Series(letters).value_counts().to_dict()

输出:

{'e': 1, 'h': 1, 'l': 2, 'o': 1}

否则,请使用dictlist理解:

letter_ct = {letter:0 for letter in word}
for letter in word:
    letter_ct[letter] += 1
letter_ct

答案 1 :(得分:0)

您可以使用pythons defaultdict

from collections import defaultdict

def word_counter(word):
   word_dict = defaultdict(int)

   for letter in word:
      word_dict[letter] += 1

    return(word_dict)

print(word_counter('hello'))

输出:

defaultdict(<class 'int'>, {'h': 1, 'e': 1, 'l': 2, 'o': 1})

答案 2 :(得分:-1)

def count_freqs(string, dictionary={}):
  for letter in string:
    if letter not in dictionary:
      dictionary[letter] = 1
    else:
      dictionary[letter] += 1
  return dictionary