gpt4 book ai didi

python - 计算字符串python中的字母

转载 作者:行者123 更新时间:2023-11-28 19:44:03 26 4
gpt4 key购买 nike

我必须编写一个函数 countLetters(word),它接受一个单词作为参数并返回一个列表,该列表计算每个字母出现的次数。字母必须按字母顺序排序。

这是我的尝试:

def countLetters(word):
x = 0
y = []
for i in word:
for j in range(len(y)):
if i not in y[j]:
x = (i, word.count(i))
y.append(x)
return y

我第一次尝试没有 if i not in y[j]

countLetters("google")

结果是

[('g', 2), ('o', 2), ('o', 2), ('g', 2), ('l', 1), ('e', 1)] 

当我想要的时候

[('e', 1), ('g', 2), ('l', 1), ('o', 2)]

当我添加 if i not in y[j] 过滤器时,它只返回一个空列表 []。

有人可以在这里指出我的错误吗?

最佳答案

如果你使用的是 Python 2.7+,我推荐 collections 模块的 Counter

>>> import collections
>>> s = 'a word and another word'
>>> c = collections.Counter(s)
>>> c
Counter({' ': 4, 'a': 3, 'd': 3, 'o': 3, 'r': 3, 'n': 2, 'w': 2, 'e': 1, 'h': 1, 't': 1})

您可以在任何版本的 Python 中使用额外的一两行执行相同的操作:

>>> c = {}
>>> for i in s:
... c[i] = c.get(i, 0) + 1

这也有助于检查您的工作。

要按字母顺序排序(以上是按频率排序)

>>> for letter, count in sorted(c.items()):
... print '{letter}: {count}'.format(letter=letter, count=count)
...
: 4
a: 3
d: 3
e: 1
h: 1
n: 2
o: 3
r: 3
t: 1
w: 2

或者保留一种可以作为字典重用的格式:

>>> import pprint
>>> pprint.pprint(dict(c))
{' ': 4,
'a': 3,
'd': 3,
'e': 1,
'h': 1,
'n': 2,
'o': 3,
'r': 3,
't': 1,
'w': 2}

最后,将其作为列表获取:

>>> pprint.pprint(sorted(c.items()))
[(' ', 4),
('a', 3),
('d', 3),
('e', 1),
('h', 1),
('n', 2),
('o', 3),
('r', 3),
('t', 1),
('w', 2)]

关于python - 计算字符串python中的字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23910595/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com