Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.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 如何按频率对字符串列表排序?_Python_List_File_Sorting_Append - Fatal编程技术网

Python 如何按频率对字符串列表排序?

Python 如何按频率对字符串列表排序?,python,list,file,sorting,append,Python,List,File,Sorting,Append,我有一份文件清单 example_list = [7.gif, 8.gif, 123.html] 有超过700k个元素,我需要按频率对它们进行排序,以查看访问次数最多的文件和访问次数最少的文件 for i in resl: if resl.count(i) > 500: resl2.append(i) print(resl2) 当我运行它时,它从不编译。我尝试过其他方法,但没有结果。请注意,我表示数组中的一个元素,而不是整数 for i in resl:

我有一份文件清单

example_list = [7.gif, 8.gif, 123.html]
有超过700k个元素,我需要按频率对它们进行排序,以查看访问次数最多的文件和访问次数最少的文件

for i in resl:
    if resl.count(i) > 500:
        resl2.append(i)
print(resl2)
当我运行它时,它从不编译。我尝试过其他方法,但没有结果。

请注意,我表示数组中的一个元素,而不是整数

for i in resl:
    if resl.count(i) > 500:
        resl2.append(i)
print(resl2)
换成这个

for i in range(0,len(resl)-1):
    if i > 500:
        resl2.append(resl[i])
print(resl2)
请注意,我表示数组中的一个元素,而不是整数

for i in resl:
    if resl.count(i) > 500:
        resl2.append(i)
print(resl2)
换成这个

for i in range(0,len(resl)-1):
    if i > 500:
        resl2.append(resl[i])
print(resl2)

你的算法是不必要的二次时间。以下是线性的

from collections import Counter
resl2 = [k for k,v in Counter(resl).items() if v > 500]
如果您需要对它们进行排序,请执行以下操作

resl2 = [(k,v) for k,v in Counter(resl).items() if v > 500]
resl2.sort(key=lambda kv: kv[1])
resl2 = [k for k,v in resl2]

你的算法是不必要的二次时间。以下是线性的

from collections import Counter
resl2 = [k for k,v in Counter(resl).items() if v > 500]
如果您需要对它们进行排序,请执行以下操作

resl2 = [(k,v) for k,v in Counter(resl).items() if v > 500]
resl2.sort(key=lambda kv: kv[1])
resl2 = [k for k,v in resl2]

你可以使用一个集合来完成这个技巧

这里有一个文件列表的最小示例,显示了它出现两次的时间:

files = ['10.gif', '8.gif', '0.gif', '0.doc', '0.gif', '0.gif', '0.tmp', '0.doc', '0.gif']

file_set = set(files)
files_freq = [0]*len(file_set)

for n,file in enumerate(file_set):
    files_freq[n] = files.count(file)

sorted_list = [f for n,f in sorted(zip(files_freq, file_set), key=lambda x: x[0], reverse=True) if n >= 2]
print(sorted_list)
输出将是:['0.gif','0.doc']

该集合将仅过滤列表中每个文件的唯一引用,循环将计算每个文件的计数

之后,令人毛骨悚然的列表理解就是诀窍


这将创建一个仅包含出现2次或更多次的文件的列表,然后关键部分强制排序函数使用zipfiles中的第一个文件\u freq\u freq,file\u set进行排序,相反的是按子代顺序对列表进行排序,显示之前的最高频率。

您可以使用一个集合来完成此操作

这里有一个文件列表的最小示例,显示了它出现两次的时间:

files = ['10.gif', '8.gif', '0.gif', '0.doc', '0.gif', '0.gif', '0.tmp', '0.doc', '0.gif']

file_set = set(files)
files_freq = [0]*len(file_set)

for n,file in enumerate(file_set):
    files_freq[n] = files.count(file)

sorted_list = [f for n,f in sorted(zip(files_freq, file_set), key=lambda x: x[0], reverse=True) if n >= 2]
print(sorted_list)
输出将是:['0.gif','0.doc']

该集合将仅过滤列表中每个文件的唯一引用,循环将计算每个文件的计数

之后,令人毛骨悚然的列表理解就是诀窍

这将仅为出现2次或以上的文件创建一个列表,然后关键部分强制排序功能使用zipfiles中的第一个文件\u freq\u freq,file\u set进行排序,反之则按子代顺序对列表进行排序,显示之前的最高频率。

来源:

我只需要找出哪个文件出现最多

因此:

统计信息。模式示例列表来自:

我只需要找出哪个文件出现最多

因此:


statistics.modeexample_list

用于确定所有出现次数超过500次的文件。我只需要找出哪个文件出现次数最多。它编译起来非常慢,因为你的算法需要二次时间。这是为了确定所有出现次数超过500次的文件。我只需要找出哪个文件出现的次数最多。它编译起来非常慢,因为你的算法需要二次时间。这个代码是否也按最高计数排序?或者只是将它们以超过500次的任何顺序添加到列表中?不,它不按计数排序,但您显然可以这样做。那么此代码是否也按最高计数排序?或者只是将它们以超过500次的任何顺序添加到列表中?不,它不按计数排序,但你显然可以做到这仍然是二次时间这仍然是二次时间