Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.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_Sorting_Tuples - Fatal编程技术网

基于元组列表对元组列表进行排序-Python

基于元组列表对元组列表进行排序-Python,python,sorting,tuples,Python,Sorting,Tuples,我试图根据另一个元组列表,通过该列表中的键对一个元组列表进行排序 假设我有以下几点: list1 = [(5, 'something'),(2,'bobby'),(9,'suzy'),(6,'crab')] list2 = [('something','othervalues'),('suzy','stuff'),('bobby','otherthings')] 从中,我将收到list1中每个元组的第一个元素的输出排序 sorted = [('suzy','stuff'),('somethin

我试图根据另一个元组列表,通过该列表中的键对一个元组列表进行排序

假设我有以下几点:

list1 = [(5, 'something'),(2,'bobby'),(9,'suzy'),(6,'crab')]
list2 = [('something','othervalues'),('suzy','stuff'),('bobby','otherthings')]
从中,我将收到list1中每个元组的第一个元素的输出排序

sorted = [('suzy','stuff'),('something','othervalues'),('bobby','otherthings') ]
所以本质上它执行一个交集,然后通过list1元组中的第一个元素对剩余的值进行排序


我不知道该怎么做,所以任何帮助都会很好。

首先从
list1
创建一本词典:

>>> order = dict(reversed(t) for t in list1)
这将创建一个
name->number
映射

然后您可以使用
sorted
方法(不要这样命名变量)和
lambda
表达式作为
key

>>> sorted(list2, key=lambda x: order[x[0]], reverse=True)
[('suzy', 'stuff'), ('something', 'othervalues'), ('bobby', 'otherthings')]
或者,如果要就地排序:

>>> list2.sort(key=lambda x: order[x[0]], reverse=True)


值得一读:

按照描述中的内容,根据另一个元组列表,按该列表中的键对元组列表进行排序:

rank = {key:rank for rank, key in list1}
print(sorted(list2, key=lambda t: rank.get(t[0]), reverse=True))

如果是
list2
a,这将很容易,如下所示:

{'bobby': 'otherthings', 'something': 'othervalues', 'suzy': 'stuff'}
Python将为您进行转换:

>>> dict2 = dict(list2)
然后,您可以使用:

N.B:是一个内置的Python函数,对于变量名来说是一个错误的选择

>>> [(k,dict2[k]) for _,k in sorted(list1, reverse=True) if k in dict2]
[('suzy', 'stuff'), ('something', 'othervalues'), ('bobby', 'otherthings')]