Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按频率对字符串列表(URL';s)排序并删除重复项_Python_Algorithm_Dictionary_Data Structures - Fatal编程技术网

Python 按频率对字符串列表(URL';s)排序并删除重复项

Python 按频率对字符串列表(URL';s)排序并删除重复项,python,algorithm,dictionary,data-structures,Python,Algorithm,Dictionary,Data Structures,我已经给出了一个包含网站URL的列表。如果元素具有相同的频率,则按字典顺序对它们进行排序,而不导入任何额外的库或包 def solve(S,N): #在这里编写代码 n=长(S) dict={} 对于S中的i: 如果我在dict中: dict[i]+=1 其他: dict[i]=0 返回指令 我尝试过这样做,但频率相同的元素会按照输入的相同顺序打印。问题是,您从未对字典进行排序,甚至没有按频率排序 计算字典中的出现次数是很常见的,因此在标准库中有一个名为的方便类,这使计算变得简单得多。如果出于

我已经给出了一个包含网站URL的列表。如果元素具有相同的频率,则按字典顺序对它们进行排序,而不导入任何额外的库或包

def solve(S,N):
#在这里编写代码
n=长(S)
dict={}
对于S中的i:
如果我在dict中:
dict[i]+=1
其他:
dict[i]=0
返回指令

我尝试过这样做,但频率相同的元素会按照输入的相同顺序打印。

问题是,您从未对字典进行排序,甚至没有按频率排序

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

从集合导入计数器
按频率排列的def订单(URL):
计数=计数器(URL)
返回排序(计数,键=lambda url:(-counts[url],url))
key函数返回一个元组,这样当两个url具有相同的频率时,
url
字符串将用作一个断开连接的字符串。
-
符号表示它们首先以最高频率排序;如果您希望先使用最低频率,只需删除
-

即可使用
排序()
按值排序,而不是按键排序

data = solve(S, N)
sorted_data = sorted(data.items(), key=lambda x: [-x[1], x[0]])

for sd in sorted_data:
    print(f'{sd[0]}: {sd[1]}')

在OP中没有导入任何额外的库或包,您就错过了。
集合
是标准库的一部分;无需安装任何额外的库或包即可使用。我的回答针对的是不允许收集的情况。