2012-05-13 4 views
3

카드 순위가있는 정렬 시스템을 만들고 그 값을 별도의 사전에서 가져옵니다. 52 장의 카드로 구성된 간단한 데크에서, 우리는 2 대 에이스 랭킹을 가지고 있습니다.이 경우 0이 10, J가 11, Q가 12, K가 13, A가 14, 2가 15입니다. 가장 큰 가치의 순위. 것은 번호 체계에 따라 순위 카드를 ASCENDING 순서로 정렬하려는 목록이 있다면 어떻게합니까?사전 값이 포함 된 요소로 목록 정렬

예를 들어, 여기에 목록이 있습니다. [3,5,9,7,J,K,2,0], 목록을 [3,5,7,9,0,J,K,2]으로 정렬하고 싶습니다. 또한 번호 체계에 대한 사전을 {'A': 14, 'K': 13, 'J': 11, 'Q': 12, '0': 10, '2': 15}으로 만들었습니다.

감사

+0

지금까지 어떤 코드가 있습니까? –

답변

1

이 답변 일 :

sorted(list_for_sorting, key=dictionary_you_wrote.__getitem__) 

이 너무 수행합니다

sorted_list = sorted(unsorted_list, key = lambda k: your_dictionary[k]) 

정렬 된 함수는 첫 번째 인수의 각 항목을 (개체가 정렬 할)를 사용하여 두 번째 인수를 호출 . 그런 식으로 lamda 함수는 사전에서 주어진 항목에 대한 값을 반환하고 정렬 된 값을 키로 사용할 수 있습니다.

목록 항목이 your_dictionary.keys()에 없으면 작동하지 않습니다. 사전을 작성하거나 사용하십시오

sorted(unsorted_list, key = lambda k: your_dictionary[k] if k in your_dictionary.keys() else k) 
+2

보통'key = dictionary_you_wrote.get'라고 쓰는 것이 더 낫습니다. –

+0

기다려주세요 ... "your_dictionary"섹션에서 숫자 값을 얻기 위해 사전을 사용 하시겠습니까? 정말 고마워! –

+0

미안하지만 '3'숫자가 사전의 키가 아니기 때문에 KeyError가 있기 때문에이 방법은 작동하지 않습니다. 정렬되지 않은 목록의 요소가 사전에없는 경우이를 어떻게 제외할까요? –

0

당신은 이미

sorted(list_for_sorting, key=dictionary_you_wrote.__getitem__)

를 시도?