Fit*_*lip 2 python sorting list unique
我似乎无法找到关于我的特定问题的问题,所以请原谅我,如果之前已经提出过这个问题!
无论如何,我正在编写一个脚本来遍历一组URL,并给我一个具有唯一参数的唯一URL列表.
我遇到的麻烦实际上是比较参数以消除多个重复.这有点难以解释,所以一些例子可能是有序的:
假设我有一个像这样的URL列表
我将每个URL解析为列表列表,所以最终我有一个这样的列表:
sort = [['id', 'title'], ['id', 'c', 'title'], ['b', 'id']]
Run Code Online (Sandbox Code Playgroud)
我需要找到一种方法,在我的列表中只给出2个列表:
new = [['id', 'c', 'title'], ['b', 'id']]
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经有点了解它,我知道我已经接近了,我已经对这个问题抨击了几天了:(.有什么想法吗?
提前致谢!:)
编辑:抱歉不清楚!此脚本旨在为后期抓取的Web应用程序查找唯一的入口点.基本上,如果URL有3个唯一的入口点
['id', 'c', 'title']
Run Code Online (Sandbox Code Playgroud)
我更喜欢与2个唯一入口点相同的链接,例如:
['id', 'title']
Run Code Online (Sandbox Code Playgroud)
因此,如果较小的变量位于较大的集合中,我需要新的列表列表来消除带有2的列表并且更喜欢仅带有3的列表.如果还不清楚请告诉我,谢谢你的快速回复!:)
我假设子集被认为是"重复"(当然是非交换的)......
首先将每个查询转换为一个集合,并将它们从最大到最小排序.然后,如果每个查询不是已添加查询的子集,请将其添加到新列表中.由于任何集合都是其自身的子集,因此该逻辑涵盖完全重复:
a = []
for q in sorted((set(q) for q in sort), key=len, reverse=True):
if not any(q.issubset(Q) for Q in a):
a.append(q)
a = [list(q) for q in a] # Back to lists, if you want
Run Code Online (Sandbox Code Playgroud)