我正在编写一个python函数,它使用一个字符串列表并生成一个最频繁出现的项的列表。
例如:

>>> trending(["banana", "trouble", "StarWars", "StarWars", "banana", "chicken", "BANANA"])
["banana", "StarWars"]

但是
>>> trending(["banana", "trouble", "StarWars", "Starwars", "banana", "chicken"])
["banana"]

到目前为止,我已经编写了一个函数,它只生成频繁出现的第一个单词,而不是一个频繁出现的单词列表。另外,我的列表包含了一个频繁项的索引。
def trending(slst):
    words = {}
    for word in slst:
        if word not in words:
            words[word] = 0
        words[word] += 1
    return words

如何修复此函数以生成最频繁出现的项(而不是第一个最频繁出现的项)的列表,以及如何删除索引?

最佳答案

不使用Counter您可以使用dict创建自己的计数器,并提取频繁项:

def trending(slst):
    count = {}
    items = []

    for item in set(slst):
        count[item] = slst.count(item)

    for k, v in count.items():
        if v == max(count.values()):
            items.append(k)

    return items

10-08 06:35