Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按公共值对两个包含相同值的不同列表进行排序_Python - Fatal编程技术网

Python 按公共值对两个包含相同值的不同列表进行排序

Python 按公共值对两个包含相同值的不同列表进行排序,python,Python,我必须列出如下所示的列表: list1 = [ ["name1", 100], ["name2", 33], ["name3", 22]] list2 = [ ["name2", 1], ["name1", -1], ["name3", 0]] 列表包含介于0和20之间的名称 两个列表中的名称完全相同,但整数值不同 是否可以对列表2进行排序,使名称的顺序与列表1中的顺序相同 名称的顺序各不相同,因此它必须是一种灵活的解决方案,可以对名称进行排序,无论它们放在列表2中的什么位置 我希望输出如下所

我必须列出如下所示的列表:

list1 = [ ["name1", 100], ["name2", 33], ["name3", 22]]
list2 = [ ["name2", 1], ["name1", -1], ["name3", 0]]
列表包含介于
0
20
之间的名称

两个列表中的名称完全相同,但整数值不同

是否可以对列表2进行排序,使名称的顺序与列表1中的顺序相同

名称的顺序各不相同,因此它必须是一种灵活的解决方案,可以对名称进行排序,无论它们放在
列表2中的什么位置

我希望输出如下所示:
list1=[[“name1”,100],“name2”,33],“name3”,22]


list2=[[“name1”,-1],“name2”,1],“name3”,0]
创建一个新列表,其顺序与仅包含名称的
list2
相同。然后,您可以根据该
名称
列表中每个列表(名称)索引中的第一个元素对
列表1
进行排序:

names = [l[0] for l in list1]
list2.sort(key=lambda l: names.index(l[0]))
#[['name1', -1], ['name2', 1], ['name3', 0]]

创建一个新列表,其顺序与仅包含名称的
list2
相同。然后,您可以根据该
名称
列表中每个列表(名称)索引中的第一个元素对
列表1
进行排序:

names = [l[0] for l in list1]
list2.sort(key=lambda l: names.index(l[0]))
#[['name1', -1], ['name2', 1], ['name3', 0]]

一个在
O(n)
时间内工作的稍微更优化的解决方案-它从列表2中创建一个dict,这样就可以避免
.index
,将复杂性从
O(n**2)
提高到
O(n)


一个在
O(n)
时间内工作的稍微更优化的解决方案-它从列表2中创建一个dict,这样就可以避免
.index
,将复杂性从
O(n**2)
提高到
O(n)


如果这些字符串是字符串,请引用它们,否则请使用
name1\u int
等。实际上是int。。。如果您能提供所需的输出,谢谢。如果这些字符串是字符串,请引用它们,否则请使用
name1\u int
等。实际上,int。。。如果您能够提供所需的输出,thanksIt将非常有用。这只会按单个索引进行排序。我需要它索引两次,因为列表中有一个列表。这有可能吗?@Barmar我已经纠正了ans,很抱歉!ValueError:['name1',100]不在列表中我在运行code@JoeIddon它只需要按名称排序,而不是按整体排序list@FlugtN确保准确复制列表定义和代码(最近已更新)。我刚刚测试了它,它是有效的。它只按单个索引进行排序。我需要它索引两次,因为列表中有一个列表。这有可能吗?@Barmar我已经纠正了ans,很抱歉!ValueError:['name1',100]不在列表中我在运行code@JoeIddon它只需要按名称排序,而不是按整体排序list@FlugtN确保准确复制列表定义和代码(最近已更新)。我刚刚测试过,它可以工作。