내림차순으로 파이썬리스트 정렬


334

이 목록을 내림차순으로 정렬하려면 어떻게해야합니까?

timestamp = [
    "2010-04-20 10:07:30",
    "2010-04-20 10:07:38",
    "2010-04-20 10:07:52",
    "2010-04-20 10:08:22",
    "2010-04-20 10:08:22",
    "2010-04-20 10:09:46",
    "2010-04-20 10:10:37",
    "2010-04-20 10:10:58",
    "2010-04-20 10:11:50",
    "2010-04-20 10:12:13",
    "2010-04-20 10:12:13",
    "2010-04-20 10:25:38"
]

답변:


387

한 줄에서 다음을 사용하십시오 lambda.

timestamp.sort(key=lambda x: time.strptime(x, '%Y-%m-%d %H:%M:%S')[0:6], reverse=True)

에 함수 전달 list.sort:

def foo(x):
    return time.strptime(x, '%Y-%m-%d %H:%M:%S')[0:6]

timestamp.sort(key=foo, reverse=True)

13
타임 튜플로의 변환은 불필요합니다.
Marcelo Cantos

2
@Marcelo : 우연의 일치로만.
Ignacio Vazquez-Abrams

16
@ IgnacioVazquez-Abrams 아니, 우연의 일치가 아닙니다. ISO 8601은 알파벳 순서가 시간 순서와 일치하도록 명시 적으로 설계되었습니다.
jwg

@jwg 감정에 동의하십시오 (명백히 우연이 아닌 의도적으로 설계됨). 그러나 주어진 형식이 ISO 8601을 준수하지 않습니다.
Marcelo Cantos

2
@ jwg 날짜와 시간 구성 요소 사이에 공백이 있습니다.
Marcelo Cantos

382

이렇게하면 정렬 된 버전의 배열이 제공됩니다.

sorted(timestamp, reverse=True)

제자리에서 정렬하려면 다음을 수행하십시오.

timestamp.sort(reverse=True)

2
reverse2.4에 추가되었습니다. 그러나 sort()안정 하다는 점에 유의하십시오. 주어진 두 비트의 코드가 반드시 동일한 결과를 제공하지는 않습니다.
Ignacio Vazquez-Abrams

3
@Rajeev-알파벳순이 연대순으로 같은 방식으로 작성된 날짜 만 정렬 할 수 있습니다 (YYYY-MM-DD HH : MM : SS). 'DD.MM.YYYY'는 단순한 예 이상이 필요한 좋은 예 sort(reverse=True)입니다.
eumiro

print ( "정렬 전 목록"); 인쇄 (myList); myList.sort (reverse = True); print ( "sortedList :"+ str (myList));
Erum

@Erum 그것은 의견이 아니라 답변이며, 답으로 중복됩니다.
Marcelo Cantos

56

당신은 단순히 이것을 할 수 있습니다 :

timestamp.sort(reverse=True)

10

목록이 이미 오름차순이므로 목록을 간단히 바꿀 수 있습니다.

>>> timestamp.reverse()
>>> timestamp
['2010-04-20 10:25:38', 
'2010-04-20 10:12:13', 
'2010-04-20 10:12:13', 
'2010-04-20 10:11:50', 
'2010-04-20 10:10:58', 
'2010-04-20 10:10:37', 
'2010-04-20 10:09:46', 
'2010-04-20 10:08:22',
'2010-04-20 10:08:22', 
'2010-04-20 10:07:52', 
'2010-04-20 10:07:38', 
'2010-04-20 10:07:30']

9

당신은 간단한 유형 :

timestamp.sort()
timestamp=timestamp[::-1]

정렬을 제대로 수행 한 다음 반대 방향으로 정렬하기 때문에 이것은 이상한 답변입니다. 원래 목록에 별명을 지정하는 다른 변수가 있으면 그 값은 이후에 원래 순서 또는 내림차순으로 요소를 갖지 않습니다. 별칭은 오름차순으로 정렬 된 목록을 가리 킵니다 . 그것은 다소 놀랍고 미묘한 버그의 원인이 될 수 있습니다.
kaya3

0

다른 방법이 있습니다


timestamp.sort()
timestamp.reverse()
print(timestamp)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.