Как упорядочить словарь по его значению, представляющему собой массив из 3 значений? - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть словарь, подобный этому:

{'GBR': [0, 0, 1],
 'TPE': [0, 1, 1],
 'KOR': [3, 1, 0],
 'CHN': [3, 1, 2],
 'AUS': [0, 0, 1],
 'UKR': [0, 0, 1],
 'JPN': [0, 1, 0],
 'ITA': [1, 0, 0]}

Значения в этом словаре являются массивами из 3 значений. Я хочу отсортировать его по всем трем значениям, где индекс 0 имеет первый приоритет, индекс 1 имеет второй приоритет, а индекс 2 имеет конечный приоритет

Это то, что я ожидал:

[('CHN', [3, 1, 2]),
 ('KOR', [3, 1, 0]),
 ('ITA', [1, 0, 0]),
 ('TPE', [0, 1, 1]),
 ('JPN', [0, 1, 0]),
 ('UKR', [0, 0, 1]),
 ('GBR', [0, 0, 1]),
 ('AUS', [0, 0, 1])]

Как я могу сделать это, используя функцию sort? Я пытался использовать lambda, но не могу понять.

1 Ответ

1 голос
/ 06 апреля 2020

Попробуйте:

d = {
 'GBR': [0, 0, 1],
 'TPE': [0, 1, 1],
 'KOR': [3, 1, 0],
 'CHN': [3, 1, 2],
 'AUS': [0, 0, 1],
 'UKR': [0, 0, 1],
 'JPN': [0, 1, 0],
 'ITA': [1, 0, 0]}

sorted(d.items(), key=lambda x: x[1], reverse=True)

Результат:

[('CHN', [3, 1, 2]), ('KOR', [3, 1, 0]), ('ITA', [1, 0, 0]), ('TPE', [0, 1, 1]), ('JPN', [0, 1, 0]), ('GBR', [0, 0, 1]), ('AUS', [0, 0, 1]), ('UKR', [0, 0, 1])]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...