2014-07-21 6 views
0

현재 그룹의 지역 이름과 관련 인원수를 인쇄하는 중첩 목록으로 작업하고 있습니다. 나는 문자열로 이름을 정수로 중첩 된 목록의 번호를 설정하고 유지하는 방법을 발견했습니다 난풍선 정렬을 사용하여 중첩 목록을 내림차순으로 구성하는 방법은 무엇입니까?

[['Alabama', 126, 79, 17], ['Alaska', 21, 100, 10], ['Arizona', 190, 59, 16], ['Arkansas', 172, 49, 28], ['California', 4964, 76, 22] ...] 

:

def Top5_bottom5(): 
    with open("APExam.txt", "r") as in_file: 
     nested = [line.strip().split(',') for line in in_file][1:] 
     nested = [line[0:1] + [int(x) for x in line[1:]] for line in nested] 
     print nested 

는이 상태 및 통계의 다음 목록을 인쇄 이와 유사한 거품 정렬 기능을 사용하려고 :

def bubble(badList): 
    length = len(badList) - 1 
    unsorted = True 

    while unsorted: 
     for element in range(0,length): 
      unsorted = False 
      if badList[element] > badList[element + 1]: 
       hold = badList[element + 1] 
       badList[element + 1] = badList[element] 
       badList[element] = hold 
       print badList 
      else: 
       unsorted = True 

그러나

내가 꽤 [1] 내가 내림차순으로 정렬 할 각 하위 목록에 번째의 요소를 지정하는 방법을 알아낼 수 없습니다이 코드에서 으로. 그래서 더 같이 보일 얻으려고 :

[['California', 4964, 76, 22], ['Arizona', 190, 59, 16], ['Arkansas', 172, 49, 28], ['Alabama', 126, 79, 17],['Alaska', 21, 100, 10]... ] 

기본적으로 무엇을 어떻게 종류의 중첩 된리스트는 그 하위 목록의 특정 요소에 거품 정렬을 사용합니까되어 아래로 비등?

+0

나는 버블 정렬을 사용하는 이유에 대해 물어야한다고 생각하는데, 그 이유는 버블 정렬을 사용하는 것이 더 느리다. – TheSoundDefense

+0

저는 이제 모든 정렬 유형을 배우고 있습니다. 이 상황에서 삽입이 더 잘 될까요? –

+0

정렬 유형을 배우는 경우 거품 정렬을 시작하는 것이 좋습니다. 그런 다음 선택 정렬, 삽입 정렬, 병합 정렬, 빠른 정렬 등을 수행합니다. – TheSoundDefense

답변

1

if badList[element] > badList[element + 1] 대신 if badList[element][1] > badList[element + 1][1]을 시도하십시오. 임의의 중첩 깊이를 조사하기 위해 표기법 []을 계속 사용할 수 있습니다.

+0

아, 그래. 그래서 []를 사용하여 모든 하위 목록의 해당 요소로 정렬합니다. –

+0

@ JohnathanScott 그렇습니다. 각 하위 목록의'[1]'요소를 구체적으로 비교하여이를 정렬 할 것입니다. 당신은 그것을 정렬하고자하는 요소에 대해'[1]'을 바꿀 수 있습니다. – TheSoundDefense