当前位置: 首页 > 面试题库 >

Python-根据另一个列表中的值对列表进行排序?

璩珂
2023-03-14
问题内容

我有一个这样的字符串列表:

X = ["a", "b", "c", "d", "e", "f", "g", "h", "i"]
Y = [ 0,   1,   1,    0,   1,   2,   2,   0,   1]

使用Y中的值对X进行排序以获取以下输出的最短方法是什么?

["a", "d", "h", "b", "c", "e", "i", "f", "g"]

具有相同“键”的元素的顺序无关紧要。我可以求助于for结构的使用,但我好奇是否有更短的方法。有什么建议么?


问题答案:

最短代码

[x for _,x in sorted(zip(Y,X))]

例:

X = ["a", "b", "c", "d", "e", "f", "g", "h", "i"]
Y = [ 0,   1,   1,    0,   1,   2,   2,   0,   1]

Z = [x for _,x in sorted(zip(Y,X))]
print(Z)  # ["a", "d", "h", "b", "c", "e", "i", "f", "g"]

一般来说

[x for _, x in sorted(zip(Y,X), key=lambda pair: pair[0])]

解释:

  • zip两个list
  • 创建一个新的,list基于zip使用排序sorted()。
  • 使用列表推导从排序的,压缩的中提取每对的第一个元素list。


 类似资料:
  • 问题内容: 我正在使用python 2.7.3,并且尝试根据另一个列表的值顺序对字典列表进行排序。 IE浏览器: 根据listOne中值的顺序对listTwo进行排序,结果如下: 我最终需要输出此文本,因此为正确显示(以正确的顺序)所做的工作如下: 是否有某种lambda表达式可用于实现此目的?必须有一种更紧凑,更简单的方法来按我想要的顺序来获取它。 问题答案: 最简单的方法是使用来为您的词典列表

  • 我看到过其他几个类似于这个问题的问题,但我还没有找到任何解决我的问题的方法。

  • 问题内容: 我在Python中有两个列表 我想对第一个列表进行排序,并使用结果对第二个列表进行排序。 换句话说,结果应为: 我知道如何分别对每个列表进行排序,但是如何使用对另一个列表进行排序所产生的索引排列来对一个列表进行排列呢? 问题答案: 施瓦兹变换

  • 问题内容: 我确信这个问题以前可能已经被问过,但我似乎找不到正确的答案。如果我有两个清单 我正在尝试使用_list1重新排列_list2中的元素,以便它们完全匹配顺序。什么是最干净的方法?所需的输出: 很抱歉,如果这是重复的,但到目前为止,我只能使用压缩的sorted()方法找到数字列表的答案。 如果_list2是列表列表怎么办? 所需输出: 还有一个假设:如果我想使用_list1作为键对其他任何

  • 有了上面的地图值列表,我需要在一个伸展过程中根据date1和date2进行排序,从而得到下面的输出… 对于上述输入数据,我要求的O/P顺序是:

  • 问题内容: 我有以下清单 我想根据其子列表的长度对列表进行排序。结果应为: 问题答案: 使用和中可用的参数。它指定一个参数的功能,该参数用于从每个列表元素中提取比较键