2013-11-01 3 views
1

Я новичок в Python, и у меня есть вопрос. Мне сказали спросить об этом отдельно от другого поста, который я сделал для той же программы. Это домашнее задание, так что я просто хотел бы получить некоторые рекомендации. У меня есть список кортежей, и я хочу отсортировать его по tuple [0] и вернуть полный кортеж для печати на экране. Кортежи состоят из (партитура, отметки (х или о), индекс)Python 3 Сортировка списка кортежей?

Вот мой основной код (часть Tic Tac Toe игра-у меня есть полный код в другом посте) :::

listOfScores = miniMax(gameBoard) 
best = max(listOfScores, key=lambda x: x[0]) 

if best[0] == 0: 
      print("You should mark " + best[1] + " in cell " + best[2] + ".") 
      print("This will lead to a tie.") 
     elif best[0] > 0: 
      print("You should mark " + best[1] + " in cell " + best[2] + ".") 
      print("This will lead to a win.") 
     else: 
      print("You should mark " + best[1] + " in cell " + best[2] + ".") 
      print("This will lead to a loss.") 

Я получаю эту ошибку :::

Traceback (most recent call last): 
    File "C:\Users\Abby\Desktop\CS 3610\hw2\hw2Copy.py", line 134, in <module> 
    main() 
    File "C:\Users\Abby\Desktop\CS 3610\hw2\hw2Copy.py", line 120, in main 
    best = max(listOfScores, key=lambda x: x[0]) 
TypeError: unorderable types: list() > int() 

я не уверен, почему это происходит. Это мой первый раз, пытаясь использовать это:

best = max(listOfScores, key=lambda x: x[0]) 

, так что я думаю, что, возможно, я использую его неправильно. Есть ли лучший способ сортировать эти кортежи (от самого большого до самого маленького, от самого маленького до самого большого), чтобы я мог получить либо самое маленькое, либо самое большое значение? Спасибо! :)

+0

Это своего рода дубликат https://stackoverflow.com/questions/10695139/sort-a-list-of-tuples-by-2nd-item-integer-value – kuanb

ответ

1

Если вы хотите сортировать его, а затем использовать sorted();)

best = sorted(listOfScores, key=lambda x: x[0]) 

Это сортирует его от самого низкого балла до максимального значения.

1

Предполагая, что

listOfScores = [1, 3, 2] 

Это как его сделать:

best = max(listOfScores, key=lambda x:x) 

Это не лямбда х: [0]. Это применимо для случая, такого как:

listOfScores = [[1], [3], [2]] 

Надеюсь, что это поможет.

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