Как отсортировать список в python на основе другого списка - PullRequest
0 голосов
/ 29 мая 2020

У меня есть список python с идентификаторами пользователей data = [123,456,789], и я хочу отсортировать этот список в зависимости от того, сколько у них очков (рассчитывается по точкам [userid]). Я пробовал SortedData = sorted(data,key=points,reverse=True) безрезультатно. Есть ли способ сделать это?

Спасибо. Эван

Ответы [ 2 ]

2 голосов
/ 29 мая 2020

Вам нужно указать это в lambda. Вы могли бы di points[x], но points.get(x,0) может быть здесь безопаснее

data = [123,456,789]
points = {123:20, 456:10, 789:15}
sortedData = sorted(data, key=lambda x:points.get(x,0), reverse=True)
print(sortedData)

Если вы разрешаете использовать None в качестве значения по умолчанию вместо числа, вы можете уменьшить до

sortedData = sorted(data, key=points.get, reverse=True) # use the method itself 
0 голосов
/ 29 мая 2020

key также принимает функцию.

Попробуйте следующее:

sorted_list = list(sorted(data, key= lambda userid: points[userid], reverse=True))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...