2016-04-14 2 views
0

Inputсортировка один список, основанный на результатах Python в порядке убывания

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 

какие-либо предложения?

ответ

1

Ошибка, которую вы видите, потому что вам необходимо импортировать модуль operator. Однако даже это не устраняет проблему.

Вместо этого вы можете сделать это следующим образом:

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] 
+0

@mhwake ValueError: нужно больше, чем 0 значений для распаковки –

+0

@HamadHassan: на самом деле? Он работает для меня как в Python 2, так и в 3. Какую версию Python вы используете? Какой пример вы тестировали? – mhawke

+0

это может быть ошибка с моей стороны, что я вижу на экране (92, 93, 94, 95) [0,76, 0,46, 0,56, 0,64] первый - это не список? Я попытался даже распечатать [0], но получить индекс из связанного! –

0

Вы были import operator?

Не то, что это необходимо:

z = list(zip(a, b)) 
z = sorted(z, key=lambda i: i[1], reverse=True) 
a, b = list(zip(*z)) 
+0

TypeError: () принимает ровно 1 аргумент (2 данных) –

+1

Если вы 'zip()' списки в другом порядке, вам вообще не нужен 'lambda'. Также он не работает (вам нужно передать ключевую функцию как аргумент ключевого слова). – mhawke

Смежные вопросы