python - 排序列表列表并在未排序列表中获取索引

标签 python list sorting

这些是我需要对列表列表执行的逻辑步骤

a = [[5,2],[7,4],[0,3]]
  1. 以输出看起来像这样的方式对列表列表进行排序

    7,5,4,3,2,0
    
  2. 获取原始列表中已排序元素的坐标,在本例中应将其作为输出

    (1,0)
    (0,0)
    (1,1)
    (2,1)
    (0,1)
    (2,0)
    

我尝试以不同的方式使用 sort、sortedargwhere 但我没有得到合理的结果,我想首先是因为 sortsorted 可以一次只按照一个轴对列表进行排序

最佳答案

此代码适用于列表列表。内部列表的长度不必相同。

在每个级别,我们使用 enumerate 遍历列表以获取列表项及其索引。在顶层,每个项目都是另一个列表,内部循环遍历每个列表以获取它们的索引和值,将索引(作为元组)存储在也包含值的元组中。然后我们根据值对生成的元组列表 (b) 进行排序,然后使用 zip 将其拆分为所有索引的元组和值的元组。

from operator import itemgetter

a = [[5, 2], [7, 4], [0, 3]]

b = [((i, j), v) for i, t in enumerate(a) for j, v in enumerate(t)]
b.sort(key=itemgetter(-1), reverse=True)
print(b)
coords, vals = zip(*b)
print(vals)
print(coords)

输出

[((1, 0), 7), ((0, 0), 5), ((1, 1), 4), ((2, 1), 3), ((0, 1), 2), ((2, 0), 0)]
(7, 5, 4, 3, 2, 0)
((1, 0), (0, 0), (1, 1), (2, 1), (0, 1), (2, 0))

关于python - 排序列表列表并在未排序列表中获取索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40358056/

相关文章:

python - 多边形与 Shapely 接触不止一点

python - 如何用python中的另一个列表替换一个列表?

python - 解析txt的特定区域,与字符串列表进行比较,然后生成由匹配项组成的新列表

java - 尝试理解桶排序代码

python - 快速、干净地查找 Numpy 数组索引的方法

python - Pandas 选择所有没有 NaN 的列

python - 将一个列表中的元素匹配到另一个列表,跳过已经匹配的元素,Python

c# - C#中的字符串排序问题

vba - 使用VBA进行多列排序

python - 尝试共享变量 basic_rnn_cell/weights,但指定形状错误