Python 3.x 同时排序两个列表,但不使用选择排序

Python 3.x 同时排序两个列表,但不使用选择排序,python-3.x,list,sorting,indexing,unique,Python 3.x,List,Sorting,Indexing,Unique,我有一些随机值的列表和另一个相同长度的列表,以及相应的索引。我想对第一个列表进行排序,在第二个列表中,索引应该按照第一个列表中的值进行排序。我能够做到这一点,但当数字重复时,它不会给出它的唯一索引。 这是我的密码 some_list = [4,8,6,1,1,3] index = [(1,1),(1,6),(1,2),(1,3),(1,4),(1,5)] new_index_pos = index.copy() randomm = [] b = some_list.copy() b.sort()

我有一些随机值的列表和另一个相同长度的列表,以及相应的索引。我想对第一个列表进行排序,在第二个列表中,索引应该按照第一个列表中的值进行排序。我能够做到这一点,但当数字重复时,它不会给出它的唯一索引。 这是我的密码

some_list = [4,8,6,1,1,3]
index = [(1,1),(1,6),(1,2),(1,3),(1,4),(1,5)]
new_index_pos = index.copy()
randomm = []
b = some_list.copy()
b.sort()

for i in range(len(b)):
    node = b[i]
    my_index = some_list.index(node)
    new_index_pos[i] = my_index
    val = new_index_pos[i]
    randomm.append(index[val])
我得到的结果是: b=[1,1,3,4,6,8]和random=[(1,3)、(1,3)、(1,5)、(1,1)、(1,2)、(1,6)]。 如何解决此问题?

这是一个示例列表,值可以重复两次以上

您可以将列表压缩在一起,然后对其进行排序,然后获取元组值

some_list=[4,8,6,1,1,3]
指数=[(1,1)、(1,6)、(1,2)、(1,3)、(1,4)、(1,5)]
new_list=[i[1]表示已排序的i(zip(some_list,index))]
打印(新列表)
输出

[(1, 3), (1, 4), (1, 5), (1, 1), (1, 2), (1, 6)]

你期望的输出是什么?这是我的原始索引列表和一些列表[(1,1),(1,6),(1,2),(1,3),(1,4),(1,5)]这也会与一些列表排序,但不是(1,3),(1,3)我想要(1,3)和(1,4)列表的索引方法声明
返回值的第一个索引。
因此,当您使用索引在某些列表中搜索
1
时,您将始终获得第一个值,除非您传入从哪个索引开始搜索