2017-02-21 34 views
0

Я пытаюсь написать функцию, которая принимает вIndex кортеж, вызвав один из его элементов

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

У меня есть список или кортежей:

alist =[('Carlos', 1), ('Gretchen', 8), ('Abby', 6),('Sam', 4)] 

до сих пор Ive сделали список всех чисел в порядке с этим кодом:

def party_time(alist,maxnum): 
    newlist = [] 
    finallist=[] 
    while len(finallist) < maxnum: 
     for tup in alist: 
      rank = tup[1] 
      newlist.append(rank) 
     newlist.sort() 

newlist = [1,4,6,8] 

Есть ли способ использовать a для цикла, чтобы пройти через newlist и индексировать кортеж, используя номер в newlist? Или он просто проиндексирует, где номер в кортеж?

+4

'отсортированы (крен, ключ = лямбда х: [1])' должны получить ваши детали сортируются. Возможно, вам также понадобится обратить вспять. – sberry

+0

Возможный дубликат [Сортировка списка по нескольким атрибутам?] (Http://stackoverflow.com/questions/4233476/sort-a-list-by-multiple-attributes) –

+0

Также обратите внимание, что ваш код вводит бесконечный цикл. –

ответ

0

Это следует сделать это:

def party_time(alist, maxnum): 
    sorted_list = sorted(alist, key=lambda p: p[1], reverse=True) 
    return sorted_list[:maxnum]