首页 > 解决方案 > 如何在 Python 中将结果存储在元组中

问题描述

编写一个名为 word_freq(text) 的函数,它接受一个字符串参数。这个字符串不会有任何标点符号。对该字符串中的 'n' 个字符单词的数量进行计数,并按计数的降序返回形式为 [(n, count), (n-1, count) ...] 的元组列表。例如:

示例: word_freq('a aaa a aaaa')

结果:[(4, 1), (3, 1), (1, 2)]

注意:对于 2 个字符的单词,这不会显示任何内容。str1 = 'a aaa a aaa' str.split(str1) str.count(str1)

def word_freq(str):查找每个单词频率的 Python 代码

我试过这个 text = 'a aaa a aaaa' def word_freq(str): tuple = () count = {} for x in str: if x in count.keys(): count[x] += 1 else: count[ x] = 1 print(count) def count_letters(word): char = "a" count = 0 for c in word: if char == c: count += 1 return count word_freq(text)

标签: pythonstringtuplescharacter

解决方案


下面的代码可以满足您的需求。现在我将解释它是如何工作的。首先,我们将创建一个名为“WC”的字典,它将保存我们句子中每个 n 字符单词的计数。现在我们开始。首先,它接收来自用户的字符串。然后它获取字符串并使用 split() 将字符串转换为单词列表。然后对于每个单词它检查它的长度,如果它是 2,它会忽略它。否则,它会将我们字典中该 n 个字符的单词的计数加 1。在检查每个单词之后,我们使用 wc.items() 将我们的字典变成一个元组列表。列表中的每个元素都是一个元组,其中包含每个单词的数据。每个元组有 2 个元素。第一个是每个单词的字符数,第二个元素是它在句子中存在的次数。不碍事,现在我们需要做的就是根据字符数反向(从高字符数到低字符数)对这个列表进行排序。我们使用 sorted 函数来做到这一点。我们基于 x[0] 进行排序,这意味着每个元组的第一个元素,即每个单词的字符数。最后,我们返回这个元组列表。你可以打印它。如果有任何不清楚的地方,请告诉我。此外,您可以在每一行放置 print() 语句,以便更好地了解正在发生的事情。这是代码,希望对您有所帮助:您可以在每一行放置 print() 语句,以便更好地了解正在发生的事情。这是代码,希望对您有所帮助:您可以在每一行放置 print() 语句,以便更好地了解正在发生的事情。这是代码,希望对您有所帮助:

inp = input("Enter your text: ")
def word_count(inp_str):
    wc = {}
    for item in inp_str.strip().split():
        if len(item) == 2:
            continue

        wc[len(item)] = wc.get(len(item), 0) + 1

    return sorted(wc.items(), key=lambda x: x[0], reverse = True)

print(word_count(inp))

推荐阅读