Как использовать вызов функции сортированного ключа в Python? - PullRequest
0 голосов
/ 24 мая 2018

У меня есть список строк, которые представляют игральные карты.Ранги могут быть

A23456789TJQK

Вот мой список

# L2
['5', '6', '7', 'A', 'K']

И я пытаюсь вызвать функцию с помощью клавиши в отсортированной функции, чтобы вернутьранг карты числовые значения по порядку.Итак, вот моя функция:

def sortYo():
   myDict = {'A': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9, 'T': 10, 'J': 10, 'Q': 10, 'K': 10}

А вот мой звонок:

L4 = sorted(L2, key = sortYo())

Но мой L4 заканчивается таким же:

# L4
['5', '6', '7', 'A', 'K']

Почему нет?t моя функция sortYo () изменяет значения?Заранее спасибо.

РЕДАКТИРОВАТЬ:

from collections import Counter
from itertools import combinations
import sys


myList = sys.argv
myList.pop(0)
Suits = ['H', 'S', 'D', 'C']
Nums = ['A', '2', '3', '4', '5', '6', '7', '8', '9', 'T', 'J', 'Q', 'K']
SuitsTwo = {'♥': 'H', '♦': 'D', '♣': 'C', '♠': 'S'}
print(myList)
L1 = [] # Suits
L2 = [] # Ranks
L3 = [i for i in myList[0]] # Cut
for i in myList:
   for x in i:
      if x in SuitsTwo:
         L1.append(SuitsTwo[x])
      elif x in Suits:
         L1.append(x)
      else:
         L2.append(x)

print('L1:'
print(L1)
print('L2:')
print(L2)
print('L3:')
print(L3)
score = 0
# straight
sC = 0
myDict = {'A': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9\
': 9, 'T': 10, 'J': 10, 'Q': 10, 'K': 10}

L4 = sorted(L2, key = lambda x: myDict.get(x,11))
print('L4')
print(L4)

#RUN
python3 as13.py AS 5H 6C 7S KH
['AS', '5H', '6C', '7S', 'KH']
L1:
['S', 'H', 'C', 'S', 'H']
L2:
['A', '5', '6', '7', 'K']
L3:
['A', 'S']
L4
['A', '5', '6', '7', 'K']
0

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

Попробуйте использовать лямбда-функцию для ключа сортировки:

myDict = {'A': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, 
          '9': 9, 'T': 10, 'J': 10, 'Q': 10, 'K': 10}

L4 = sorted(L2, key=lambda x: myDict.get(x, 11))

Это позволит отсортировать по значениям, связанным с каждым ключом в myDict.Он также поместит любое значение в L2, которого нет в ключах myDict в конце отсортированного списка, назначив значение по умолчанию 11 неизвестным ключам.

Если вы невам не нужно беспокоиться об элементах в L2, которых нет в ключах myDict, вы также можете использовать:

L4 = sorted(L2, key=myDict.get)
0 голосов
/ 24 мая 2018
sorted(..., key='A23...JQK'.index)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...