Python 我需要在这段代码中添加计算句子中唯一单词数量的代码

Python 我需要在这段代码中添加计算句子中唯一单词数量的代码,python,Python,这是一段代码,用于输入一个句子,并按字典顺序对其单词进行排序。在输出中,我还想打印该句子中唯一单词的数量。我该怎么做呢?试试看 x = raw_input() words = x.split() words.sort() for word in words: print(word.lower()) 正如在评论中愉快地指出的那样,没有任何解释,所以就这样。set()方法从列表中生成一个集合。集合只能有唯一的条目,因此len()方法将提供唯一集合的长度。注释中还指出,集合有一个len()方

这是一段代码,用于输入一个句子,并按字典顺序对其单词进行排序。在输出中,我还想打印该句子中唯一单词的数量。我该怎么做呢?

试试看

x = raw_input()
words = x.split()
words.sort()
for word in words:
    print(word.lower())
正如在评论中愉快地指出的那样,没有任何解释,所以就这样。
set()
方法从列表中生成一个集合。集合只能有唯一的条目,因此
len()
方法将提供唯一集合的长度。注释中还指出,集合有一个
len()
方法,因此不需要像我之前的回答那样将集合转换为列表。

您可以使用

计数器是用于计算可散列对象的dict子类。它是一个无序集合,其中元素存储为字典键,其计数存储为字典值


如果不想导入任何外部模块。您可以使用“set()”,确切地说:

唯一数量=len(集合(字))
打印唯一数量

什么是字典顺序?另外,显示一个示例输入、预期输出,并解释您自己的代码中存在的问题。您的代码目前运行情况如何,不符合预期行为。我猜“字典顺序”意味着“字母顺序”,但是的,我们确实需要对此进行更多说明。集合还实现了
len()
方法。您不必转换为列表来获得大小。您还可以提到,转换为set会自动删除重复的条目,这样对OP或其他任何人来说都不会感到不可思议。@TheDude,无需解释。这就是我评论的重点……这只是一个代码转储答案。@idjaw我不确定我是否理解唯一单词列表和删除所有重复单词列表之间的区别。。。“我还想打印唯一单词的数量”,而不是唯一单词本身。@TheDude
“狗先吃培根,然后吃奶酪,然后吃土豆”
。因此,在这个句子中,除了
之外的所有内容都只在句子中出现一次。我想这就是OP所说的独一无二。然而,由于仍然没有澄清,这可能是一个删除重复的问题。但我认为,这是一个拉出字符串中只出现过一次的单词的问题。这就是为什么回答这些问题很难。直到我们最终让他们提供更好的例子,我们才知道OP的真正含义。我会留下我的答案,直到它变得更清晰,但它可能需要更新。可能想解释什么是计数器(即使它很明显)和它返回什么。因此,我不知道您是否打算在最终解决方案中保留某些部分,但默认情况下,这不会给您唯一的计数。还有一些逻辑可以真正得到唯一的计数。不确定你所指的逻辑对我来说似乎很好。@marcusshep输出唯一的单词。缺少的逻辑是打印出计数为1的单词。@marcusshep仅供参考-尽管如此,我们仍然不知道OP的方向。例如,可以输出计数为1的单词,也可以输出字符串并删除重复项。我认为是前者,在这种情况下,您的
计数器
解决方案就足够了。
x = raw_input()
words = x.split()
words.sort()
for word in words:
    print(word.lower())
print(len(set(words)))
from collections import Counter

words = ["foo", "bar", "bar"]
counts = Counter(words)
print counts
# Counter({"foo": 1, "bar": 2})
unique_words = [word for word in counts if counts[word] == 1]
print unique_words
# ["foo"]