Python 3.x 在函数中以小写形式返回唯一单词:/

Python 3.x 在函数中以小写形式返回唯一单词:/,python-3.x,Python 3.x,我试图从一个小写的句子中获得所有独特的3个字符的单词,但我不确定为什么它不起作用 句子=“在不太冷的天气里,我们可能会找到一只熊” 单词列表=获取唯一字母单词(句子) 打印(单词列表) ['may'、'not'、'the'、'too'] def get_unique_3_letter_words(text): result = [] for x in text.split(): if len(x)==3 and (x not in result):

我试图从一个小写的句子中获得所有独特的3个字符的单词,但我不确定为什么它不起作用

句子=“在不太冷的天气里,我们可能会找到一只熊” 单词列表=获取唯一字母单词(句子) 打印(单词列表) ['may'、'not'、'the'、'too']

def get_unique_3_letter_words(text):
    result = []
    for x in text.split():
        if len(x)==3 and (x not in result):
            result.append(x)
    result.sort()
    return result.lower()

可以使用集合选择唯一的图元:

def get_unique_3_letter_words(text):
    """returns a sorted list of unique 3 letter words from text, 
    converted to lower case.
    """
    result = set()
    for x in text.split():
        if len(x) == 3:
            result.add(x.lower())
    return sorted(list(result))

可以使用集合选择唯一的图元:

def get_unique_3_letter_words(text):
    """returns a sorted list of unique 3 letter words from text, 
    converted to lower case.
    """
    result = set()
    for x in text.split():
        if len(x) == 3:
            result.add(x.lower())
    return sorted(list(result))

在原始代码中,除了最后一行之外,它看起来应该可以工作。您不能在列表中调用
lower

改变

result.append(x)

改变

return result.lower()

尽管如此,这并不是一个有效的解决方案。代码必须为每个单词搜索整个解决方案集。最具吸引力的解决方案是使用集合理解

def get_unique_3_letter_words(text):
  return sorted({x.lower() for x in text.split() if len(x) == 3})

在原始代码中,除了最后一行之外,它看起来应该可以工作。您不能在列表中调用
lower

改变

result.append(x)

改变

return result.lower()

尽管如此,这并不是一个有效的解决方案。代码必须为每个单词搜索整个解决方案集。最具吸引力的解决方案是使用集合理解

def get_unique_3_letter_words(text):
  return sorted({x.lower() for x in text.split() if len(x) == 3})

您可以使用您已有的技术,只需将小写单词与自身进行比较,如下所示:

def get_unique_3_letter_words(text):

    result = []

    split_text = text.split()
    for word in split_text:
        if len(word) == 3 and word.lower() == word and word not in result:
            result.append(word)

    result.sort()
    return result

sentence = "In the the not too too may extreme cold we may find a bear"
words_list = get_unique_3_letter_words(sentence)
print(words_list)
结果

['may', 'not', 'the', 'too']

您可以使用您已有的技术,只需将小写单词与自身进行比较,如下所示:

def get_unique_3_letter_words(text):

    result = []

    split_text = text.split()
    for word in split_text:
        if len(word) == 3 and word.lower() == word and word not in result:
            result.append(word)

    result.sort()
    return result

sentence = "In the the not too too may extreme cold we may find a bear"
words_list = get_unique_3_letter_words(sentence)
print(words_list)
结果

['may', 'not', 'the', 'too']

这会以小写形式返回吗?是的,在添加到
集合时,
单词
会转换为
小写
,这会以小写形式返回吗?是的,
单词
在添加到
集合时会转换为
小写
,谢谢,但这会两次返回“the”?如何纠正这一点,使3个字母的单词只返回一次?我添加了一个带有
的修复程序,单词不在结果中:
。这解决了您提到的问题。谢谢,但这会返回两次“the”?如何纠正这一点,使3个字母的单词只返回一次?我添加了一个带有
的修复程序,单词不在结果中:
。这就解决了你提到的问题。