我给出了一个包含网站URL的列表。如果元素具有相同的频率,请按字典顺序对其进行排序,而无需导入任何其他库或包。

def solve (S, N):
    # write your code here
    n = len(S)
    dict = {}
    for i in S:
        if i in dict:
            dict[i]+=1
        else:
            dict[i]=0
    return dict


我尝试这样做,但是具有相同频率的元素以与输入相同的顺序打印。

最佳答案

问题在于您从未对字典排序,甚至没有按频率排序。

在字典中对出现的次数进行计数是很常见的,因此标准库中有一个方便的类,名为collections.Counter,这使此操作更加简单。如果标准库出于您的目的算作“额外”库,那么您可以使用原始循环来构建字典;重要的部分是计算频率后如何对其进行排序。

from collections import Counter

def order_by_frequency(urls):
    counts = Counter(urls)
    return sorted(counts, key=lambda url: (-counts[url], url))


键函数返回一个元组,以便当两个URL的频率相同时,url字符串将用作决胜局。 -符号表示它们首先以最高频率进行排序;如果您想首先获得最低频率,只需删除-

09-30 13:51
查看更多