【发布时间】:2019-08-03 04:35:26
【问题描述】:
我有一个列表列表:
['test', 'testlink', 1]
['test', 'testlink', 2]
['test ', 'testlink', 3]
['test ', 'testlink', 4]
['test 2', 'test2link', 1]
['test 2', 'test2link', 2]
['test 3', 'test3link', 1]
['test 3', 'test3link', 3]
['test 3', 'test3link', 4]
我想过滤列表以返回每个唯一第一个元素的第三个元素的最大值。
我想要的结果是:
['test ', 'testlink', 4]
['test 2', 'test2link', 2]
['test 3', 'test3link', 4]
我正在努力寻找一种方法来做到这一点。下面的代码块进入我的排序列表,但在那之后我被卡住了。
#create some dummy data
rows=[]
rows.append(["test","testlink",1])
rows.append(["test 2","test2link",1])
rows.append(["test 3","test3link",1])
rows.append(["test","testlink",2])
rows.append(["test","testlink",1])
rows.append(["test 2","test2link",1])
rows.append(["test 3","test3link",1])
rows.append(["test ","testlink",3])
rows.append(["test 3","test3link",3])
rows.append(["test ","testlink",4])
rows.append(["test 3","test3link",4])
rows.append(["test 2","test2link",2])
#filter out duplicates
newRows = []
for elem in rows:
if elem not in newRows:
newRows.append(elem)
rows = newRows
#sort the lists
rows = sorted(rows,key=lambda x: (x[0],x[2]))
感谢所有排序给出的答案都可以在我的 Ironpython 环境中工作
【问题讨论】:
-
你根本不关心第二个元素吗?如果两个列表的第一个元素相同,但第二个元素不同,会发生什么?
-
如果它们具有相同的第一个元素和不同的第三个元素,则默认情况下它们具有不同的第二个元素。抱歉,我的虚拟代码没有说明这一点。 :-)。重要的元素是第三个元素,因为它是当前版本。
标签: python list filtering ironpython