在解释我的要求之前,让我先解释一下我不想要什么:
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/