【发布时间】:2016-07-07 07:53:34
【问题描述】:
在 Python 2 中,假设我们有两个列表:
list1 = [["A"],["A","B"],["B","D"],["C"],["A","B","D"]]
list2 = [5,10,10,15,10]
我想根据 list2(权重)对 list1 进行降序排序,只要两个项目的权重相同(例如 x = ["A","B","D"] 和 y = [" B","D"] 的权重为 10),长度大的在前。对于 list1 和 list 2,我希望输出如下:
[["C"], ["A","B","D"], ["A","B"],["B","D"],["A"]]
这怎么可能?
我所知道的是,我们可以通过首先定义仅根据大小对它们进行排序
zipped = zip(list1,list2)
然后:
zipped.sort(key=lambda t: t[1],reverse=True)
【问题讨论】:
-
我认为您的意思是您要根据
list2而不是您编写的方式对list1进行排序。 -
@BurhanKhalid 你是对的。已编辑。
-
良好的第一步。现在你有什么尝试?
-
我假设您使用的是 Python 2,因为
zip在 Python 3 中返回一个迭代器。 -
@JulienBernu 第二步,我想提取具有相同重量的项目。然后,定义一个等于每个项目长度的新权重,并根据新权重对它们进行排序。