gpt4 book ai didi

python - 如何计算首字母大写的单词出现的比例

转载 作者:太空宇宙 更新时间:2023-11-03 15:36:59 24 4
gpt4 key购买 nike

通过使用 Python,我想计算出现首字母大写的单词的比例。例如,这是一个示例单词列表,

word_list = ["capital", "Capital", "Capital", "Capital", "capital", "bus", "Bus", "bus", "Bus", "white"]

我想产生如下结果:

{"Capital": 0.6, "Bus": 0.5, "White": 0}

您对此有什么想法吗?这看起来很容易,但很难想出好的解决方案。具体来说,使用defaultdict可以很容易地统计出首字母大写的单词的个数。

word_dict = defaultdict(int)
for word in word_list:
if word[0].isupper():
word_dict[word] += 1

提前致谢!

最佳答案

单词排序:itertools.groupby

假设在您的示例中,您的字符串已排序,您可以使用 groupbystatistics.mean :

from itertools import groupby
from statistics import mean

grouper = groupby(word_list, key=str.casefold)
res = {k.capitalize(): mean(x[0].isupper() for x in words) for k, words in grouper}

# {'Bus': 0.5, 'Capital': 0.6, 'White': 0}

单词不一定排序:sorted + groupby

在这种情况下,您可以应用上述逻辑之前进行排序:

word_list = sorted(word_list, key=str.casefold)

如果您的列表未排序,这会增加算法的复杂性。

不一定排序的单词:collections.defaultdict

另一种方法是通过 collections.defaultdict 构造一个包含 bool 值列表的字典。 ,然后使用 statistics.mean:

from collections import defaultdict
from statistics import mean

dd = defaultdict(list)
for word in word_list:
dd[word.capitalize()].append(word[0].isupper())

# defaultdict(list,
# {'Bus': [False, True, False, True],
# 'Capital': [False, True, True, True, False],
# 'White': [False]})

res = {k: mean(v) for k, v in dd.items()}

# {'Bus': 0.5, 'Capital': 0.6, 'White': 0}

关于python - 如何计算首字母大写的单词出现的比例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54252492/

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