在Python中解析多行

我目前正在学习Python,我需要编写一个程序来确定一首诗中出现次数最多的单词。使我困扰的问题是将一首诗的行解析成一个包含诗词的单列表。当我解决它时,我将毫不费力地确定出现次数最多的单词。


我可以通过反复调用input()来访问这首诗的行,最后一行包含三个字符###。


所以,我写道:


while True:

   y = input()

   if y == "###":

     break

   y = y.lower()

   y = y.split()

并输入:


Here is a line like sparkling wine

Line up now behind the cow

###

得到了结果:


['here', 'is', 'a', 'line', 'like', 'sparkling', 'wine']

['line', 'up', 'now', 'behind', 'the', 'cow']

如果我尝试调用y [0],则会得到:


here

line

如何在同一变量内连接两个列表,或者如何将每一行分配给不同的变量?


阿晨1998
浏览 202回答 2
2回答

阿波罗的战车

words = []while True:   y = input()   if y == "###":     break   words.extend(y.lower().split())from collections import CounterCounter(words).most_common(1)整个代码可以压缩为以下一种格式:Counter(y.lower() for x in iter(input, '###') for y in x.split()).most_common(1)例如。>>> sys.stdin = StringIO.StringIO("""Here is a line like sparkling wineLine up now behind the cow###""")>>> Counter(y.lower() for x in iter(input, '###') for y in x.split()).most_common(1)[('line', 2)]由于每个请求,而没有任何import小号c = {} # stores countsfor line in iter(input, '###'):    for word in line.lower().split():        c[word] = c.get(word, 0) + 1 # gets count of word or 0 if doesn't existprint(max(c, key=c.get)) # gets max key of c, based on val (count)不必再次通过字典来查找最大单词,请在进行操作时始终对其进行跟踪:c = {} # stores countsmax_word = Nonefor line in iter(input, '###'):    for word in line.lower().split():        c[word] = c.get(word, 0) + 1 # gets count of word or 0 if doesn't exist        if max_word is None:            max_word = word        else:            max_word = max(max_word, word, key=c.get) # max based on count       print(max_word)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python