как отсортировать матрицу списков в python? - PullRequest
0 голосов
/ 07 августа 2020

Итак, в основном у меня есть 5 2-мерных списков, и эти списки содержат rate и deviation. Вот так введите описание изображения здесь

Итак, в этом файле вы можете увидеть всего 16 оценок и разработчиков для каждого списка. Обычно рейтинг и разработчик объединяются в один блок, и в каждом списке есть 16 таких блоков. Я хочу сформировать матрицу ставок 4x5 из всего списка и отсортировать всю матрицу в порядке убывания и получить из нее первые 4 самых высоких ставки и получить их соответствующие dev. Первая матрица будет содержать первые 4 скорости Rate1, Rate2, Rate3, Rate4 и Rate5: вот так

16 6 5 6 0   0 5 2 0 0   16 8 8 9 10   0 7 6 6 6
16 6 4 5 0   0 5 0 0 0   16 7 8 9 9    0 7 6 6 6
16 6 3 2 0   0 5 0 0 0   0  7 8 9 8    0 6 6 5 6
0  5 2 0 0   0 5 0 0 0   0  7 8 7 7    0 6 5 5 2

После сортировки всех этих матриц ожидаемый результат будет выглядеть так:

from 1st matrix: 
[16,16,16,6] = rates
[7,2,10,26] = Dev

from 2nd matrix: 
[5,5,5,5] = rates
[17,8,14,26] = dev

from 3rd matrix: 
[16,16,10,9] = rates
[12,7,90,49] = dev

from 4th matrix: 
[7,7,6,6] = rates
[53,30,48,37] = dev

combined result:
[16,16,16,6,5,5,5,5,16,16,10,9,7,7,6,5] = rates
[7,2,10,26,12,7,90,49,53,30,48,37,53,30,48,37] = dev

Моя попытка:

rate1 = [16,16,16,0,0,0,0,0,16,16,0,0,0,0,0,0]
rate2 = [6,6,6,5,5,5,5,5,8,7,7,7,7,7,6,6]
rate3 = [5,4,3,2,2,0,0,0,8,8,8,8,6,6,6,5]
rate4 = [6,5,2,0,0,0,0,0,9,9,9,7,6,6,5,5]
rate5 = [0,0,0,0,0,0,0,0,10,9,8,7,6,6,6,2]

dev1 = [7,2,10,-8,-1,-5,-4,-26,12,7,-14,-21,-16,-15,-19,-20]
dev2 = [26,19,22,18,17,8,14,26,15,21,29,49,53,30,48,37]
dev3 = [53,54,40,36,57,-8,-1,-5,49,53,48,37,44,90,45,88]
dev4 = [53,54,57,-8,-1,-5,-4,-26,49,53,48,90,88,55,61,53]
dev5 = [-8,-1,-5,-4,-26,-25,-16,0,90,88,61,79,63,88,82,92]
import itertools
from itertools import chain
price1 = list(zip(rate1, dev1))
price2 = list(zip(rate2, dev2))
price3 = list(zip(rate3, dev3))
price4 = list(zip(rate4, dev4))
price5 = list(zip(rate5, dev5))

newPrice1 = [sorted(block, reverse=True) for block in price1]
newPrice2 = [sorted(block, reverse=True) for block in price2]
newPrice3 = [sorted(block, reverse=True) for block in price3]
newPrice4 = [sorted(block, reverse=True) for block in price4]
newPrice5 = [sorted(block, reverse=True) for block in price5]

Это будет просто отсортировать один список за раз. Но я хочу рассмотреть все, как упомянуто выше. Я не знаю правильного подхода. Может кто-нибудь помочь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...