如何编写一个Python程序来计算字符串中的字符数(字符频率)?[duplicate]

wwwo4jvm  于 2023-02-21  发布在  Python
关注(0)|答案(1)|浏览(150)
    • 此问题在此处已有答案**:

(13个答案)
19小时前关闭。

def character_frequency(string):
    for i in string:
        count = 0
        print(i,":", count, end = ", ")
        count += 1
    return count

print(character_frequency("dortmund"))

我的目标是打印每个字母,并查看该字母在字符串中出现了多少次。
我试着打印每个字母,然后使用一个名为count的变量迭代每个字母,看看这个字母在字符串中出现了多少次。

qlvxas9a

qlvxas9a1#

您可以使用文档中的collection.Counter类:
Counter是一个dict子类,用于计算可散列对象。它是一个集合,其中元素存储为字典键,其计数存储为字典值。计数允许为任何整数值,包括零或负计数。Counter类类似于其他语言中的bags或multiset。
元素从可迭代对象计数或从另一个Map(或计数器)初始化:

c = Counter()                           # a new, empty counter
c = Counter('gallahad')                 # a new counter from an iterable
c = Counter({'red': 4, 'blue': 2})      # a new counter from a mapping
c = Counter(cats=4, dogs=8)             # a new counter from keyword args

Counter对象有一个字典接口,只是它们对缺少的项返回零计数,而不是引发KeyError:

c = Counter(['eggs', 'ham'])
c['bacon']                              # count of a missing element is zero

将计数设置为零并不会从计数器中删除元素。使用del可将其完全删除:

c['sausage'] = 0                        # counter entry with a zero count
del c['sausage']                        # del actually removes the entry

版本3.1中的新增功能。
版本3.7中的变更:作为一个dict子类,Counter继承了记住插入顺序的功能。Counter对象上的数学运算也保持顺序。结果根据元素在左操作数中首次出现的时间排序,然后根据在右操作数中出现的顺序排序。
然后,您可以打印Counter对象,使用pprint library,或者自己编写一些漂亮的打印代码。

相关问题