Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/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_List_Sorting - Fatal编程技术网

根据python的结果按降序排序一个列表

根据python的结果按降序排序一个列表,python,list,sorting,Python,List,Sorting,输入 需要根据列表b按降序对列表a进行排序 a= (92, 93, 94, 95) b= [0.76, 0.46, 0.56,0.64] 我曾经 a= [92, 95, 94, 93] b= [0.76, 0.64, 0.56, 0.46] 我试着用它按升序排序,然后试着用另一个列表按相反的顺序写 错误是: a,b = zip(*sorted(zip(a,b), key=operator.itemgetter(0), reverse=True)) 有什么建议吗?您看到的错误是因为您需要导入

输入

需要根据列表b按降序对列表a进行排序

a= (92, 93, 94, 95)
b= [0.76, 0.46, 0.56,0.64]
我曾经

a= [92, 95, 94, 93]
b= [0.76, 0.64, 0.56, 0.46]
我试着用它按升序排序,然后试着用另一个列表按相反的顺序写

错误是:

a,b = zip(*sorted(zip(a,b), key=operator.itemgetter(0), reverse=True))

有什么建议吗?

您看到的错误是因为您需要导入
操作员
模块。即使这样做也不能解决问题

相反,您可以这样做:

key=operator.itemgetter(0), reverse=True))
NameError: name 'operator' is not defined
对于您的数据:

b, a = zip(*sorted(zip(b,a), reverse=True))
这将为您提供元组。如果您确实想要/需要列表:

>>> a = [92, 93, 94, 95]
>>> b = [0.76, 0.46, 0.56,0.64]
>>> b, a = zip(*sorted(zip(b,a), reverse=True))
>>> a
(92, 95, 94, 93)
>>> b
(0.76, 0.64, 0.56, 0.46)

您是否有导入操作员

并不是说需要:

>>> a = [92, 93, 94, 95]
>>> b = [0.76, 0.46, 0.56,0.64]
>>> b, a = (list(x) for x in zip(*sorted(zip(b,a), reverse=True)))
>>> a
[92, 95, 94, 93]
>>> b
[0.76, 0.64, 0.56, 0.46]

TypeError:()只接受1个参数(给定2个),如果您以另一种顺序
zip()
列表,则根本不需要
lambda
。此外,它也不起作用(您需要将key函数作为关键字参数传递)。@mhwake ValueError:需要超过0个值才能传递unpack@HamadHassan:真的吗?它在Python2和Python3中都适用。您使用的是什么版本的Python?您测试的是哪个示例?这可能是我的错误,我在屏幕上看到的是(92,93,94,95)[0.76,0.46,0.56,0.64]第一个不是列表?我甚至尝试打印[0],但索引超出了范围!我正在使用python 2。7@HamadHassan:肯定是你这边的错误。它在2.7中对我有效。答案很清楚,有两种变体:第一种返回元组(都是
a
b
)。第二个返回列表(同样是
a
b
)。看不出你是如何得到每种类型的。
z = list(zip(a, b))
z = sorted(z, key=lambda i: i[1], reverse=True)
a, b = list(zip(*z))