python - 找出: In how many word a character is present in a given Sentence: PYTHON

标签 python string

在解释我的要求之前,让我先解释一下我不想要什么:

s= 'Hello satya, have you achieved your goal'
s.count('l') #o/p: 3
#I don't want 3 instead  I need 2. How? explained below.

预期输出:

{'H':3, 'e':3, 'l':2, 'o':4, 's':1, 'a':3....etc}

也就是说:从该句子中取出所有唯一的字母/字符。 然后查找“该字符出现在多少个单词中”,从而计算出现的次数并存储在字典中。

例如,字符“l”在该句子中出现了 3 次,但出现在 2 个单词中(在 hello 中它被重复,但我希望将其计为 1)。

请提出建议。如果我遗漏了一些让我的问题更容易理解的内容,请突出显示。

这是我尝试过的:

def char_word(s):
    s_d = {}
    chars = list(s.replace(' ', ''))
    print(chars)
    for char in chars:
        c_count = 0
        for word in s.split():
            if char in word:
                c_count += 1
            s_d[char] = c_count
    print(s_d)
    return s_d

最佳答案

首先,将字符串拆分为单独的单词并创建输出字典。我建议使用collections.Counter c.ass,它只是一个 dict 子类,旨在计算出现次数:

import collections
counter = collections.Counter()
words = s.split()

现在循环遍历所有单词并创建一个 set从每一个字。由于 set 不能有重复的值,因此保证每个字符只有一份副本:

for word in words:
    characters = set(word)

最后,循环遍历该单词现在唯一的字符,增加该字符的计数器值:

    for character in characters:
        counter[character] += 1

此外,您可以将其缩短很多,甚至可以缩短为一行:

>>> counter = collections.Counter(c for word in s.split() for c in set(word))

要获取特定字符的计数,只需通过 counter[c] 访问它:

>>> counter['l']
2
>>> counter['x']
0
>>> counter['H']
1

关于python - 找出: In how many word a character is present in a given Sentence: PYTHON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43199645/

相关文章:

java - 将 JTextField 输入转换为整数

String.prototype.replace 函数中的 Javascript 'this' 关键字

c - 查找字符串中重复的单词和它们之间的符号

java - 使用需要对象作为参数的compareTo 来比较字符串

javascript - 为什么 "\9"给出 "9"而 "\7"为空?

python - 将更改日期的电子邮件主题行添加到 "accepted subjects"列表

python - 在python plotly包中的散点图中操纵图例

java - Elasticsearch 排除包含特定术语的文档

python - 如何计算 Pandas Dataframe 中变量的唯一组合

gzip.py 中的 python 导入错误; zlib 在哪里