Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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_Sorting_Unique - Fatal编程技术网

Python排序列表的唯一列表';项目

Python排序列表的唯一列表';项目,python,list,sorting,unique,Python,List,Sorting,Unique,我似乎找不到关于我的特殊问题的问题,所以如果以前有人问过,请原谅我 无论如何,我正在编写一个脚本来循环一组URL,并给我一个带有唯一参数的唯一URL列表 我遇到的问题实际上是比较参数以消除多个重复项。这有点难以解释,因此以下是一些例子: 假设我有一个像这样的URL列表 hxxp://www.somesite.com/page.php?id=3&title=derp hxxp://www.somesite.com/page.php?id=4&title=blah hxxp://www.somes

我似乎找不到关于我的特殊问题的问题,所以如果以前有人问过,请原谅我

无论如何,我正在编写一个脚本来循环一组URL,并给我一个带有唯一参数的唯一URL列表

我遇到的问题实际上是比较参数以消除多个重复项。这有点难以解释,因此以下是一些例子:

假设我有一个像这样的URL列表

  • hxxp://www.somesite.com/page.php?id=3&title=derp
  • hxxp://www.somesite.com/page.php?id=4&title=blah
  • hxxp://www.somesite.com/page.php?id=3&c=32&title=thing
  • hxxp://www.somesite.com/page.php?b=33&id=3
我让它将每个URL解析为一个列表列表,因此最终我得到了如下列表:

sort = [['id', 'title'], ['id', 'c', 'title'], ['b', 'id']]
我需要找到一种方法,在我的列表中只列出两个列表:

new = [['id', 'c', 'title'], ['b', 'id']]
到目前为止,我还有点事情要解决,我知道我已经很接近了,而且我已经在这几天里一直在猛烈抨击:(.有什么想法吗

提前感谢!:)

编辑:对不起,不清楚!此脚本旨在为web应用程序在爬网后查找唯一的入口点。基本上,如果一个URL有3个唯一的入口点

['id', 'c', 'title']
我更喜欢相同的链接,有两个独特的入口点,例如:

['id', 'title']

因此,我需要我的新列表来消除带有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

规则是什么?如果有一个
['c','b']
['b','id','c']
['b','id','d']
,我不明白。什么是的复制品?是因为它是
['id','c','title']
的一个子集吗?易建联和马塞洛都是对的,你的标准没有很好的定义。我为不清楚而道歉。基本上,我是一名web应用程序测试人员,在对网站进行爬网后,我会寻找独特的入口点。因此,拥有一个具有相同入口点的URL列表对我来说是没有用的。如果id和title与id、title和c位于同一页面上,那么带有3个变量入口点的url将是一个有用的链接,可以与带有2个变量入口点的url相同。我将重新编辑我的问题,并试图澄清!谢谢:)我相信我们会赢的!太棒了-非常感谢你。我将使用一个更大的子集进行测试,但这似乎非常有效!:):)