有没有办法使用python查找和打印字符串中三个最长的单词?

时间:2019-07-30 17:53:57

标签: python

我需要在列表中找到三个最长的单词,并在一个文本文件名中对其进行索引。

如果列表中少于三个单词,我希望它将所有三个(或它们中的任意一个)保存为文本文件名

任何帮助或评论都将不胜感激。

对不起,如果我有任何错误,我是编码和堆栈的新手

print(" ")
input = input(" ")
prohibited = {'this','although','and','as','because','but','even if','he','and','however','cosmos','an','a','is','what','question :','question','[',']',',','cosmo',' ','  ','   '}
processedinput = [word for word in re.split("\W+",input) if word.lower() not in prohibited]
processedinput.sort()
processed = re.sub('[\[\]]','',repr(processedinput))



#read from database
with open(processed + '.txt',  "a") as myfile:
    myfile.write('/n'+ processed)

我的期望是采用任意字符串,按字母顺序sort并使用3个最长的单词

1 个答案:

答案 0 :(得分:1)

您可以使用list.sort(key=len)new_list = sorted(list, key=len)来按单词的长度排序。

prohibited = {'this','although','and','as','because','but','even if','he','and','however','cosmos','an','a','is','what','question :','question','[',']',',','cosmo',' ','  ','   '}

longest = sorted(prohibited, key=len, reverse=True)[:3]

print(longest)

结果:

['question :', 'although', 'question']

但是您可能有许多相同长度的单词,并且可能需要将它们分组-然后您可以创建字典来对具有相同长度的单词进行分组-{length:[word1, word2, ...]}

prohibited = {'this','although','and','as','because','but','even if','he','and','however','cosmos','an','a','is','what','question :','question','[',']',',','cosmo',' ','  ','   '}

data = dict()

for item in prohibited:
    length = len(item)
    if length not in data:
        data[length] = []
    data[length].append(item)

longest_keys = sorted(data.keys(), reverse=True)[:3]
print('longest_keys:', longest_keys)

longest = [data[x] for x in longest_keys]
print('longest:', longest)   

结果:

longest_keys: [10, 8, 7]
longest: [['question :'], ['although', 'question'], ['however', 'even if', 'because']]