내가 가진 튜플을 열거합니다 인컨텍스트 목록에 일부 데이터 또는 목록 (예:
data = [[1,2,3], [4,5,6], [7,8,9]]
data = [(1,2,3), (4,5,6), (7,8,9)]
그리고 난 로렌아줌마가 두 번째 요소에 의해 정렬하려면 서브세트. 즉, 여기서 '2' 에서 '5' 2.5,8 순으로 정렬 (1.2,3)', '에서' (4.5,6) '. 왜 이렇게 일반적인 방법은? 내 목록 또는 열거합니다 튜플을 작성하든지 합니까?
[# 39 의 Stephen& 오토메이티드] (https://stackoverflow.com/questions/3121979/python-sort-list-tuple-in-list/3121985 # 3121985) 는 하나의 I& # 39; d 사용합니다. # 39 의 데스 here& 완전성을 위해 가진 패턴을 목록 (정렬하려면 우네코라티 지도 모른다), 지능형:
decorated = [(tup[1], tup) for tup in data]
decorated.sort()
undecorated = [tup for second, tup in decorated]
또는, 더 많은 간결:
[b for a,b in sorted((tup[1], tup) for tup in data)]
기재된 대로 [파이썬 정렬 따라하기 name] (http://wiki.python.org/moin/HowTo/Sorting # 테오드웨이우싱데쿠라치 우네코라티 정렬하려면), 이 때 핵심 기능을 사용할 수 있게 된 이후, 파이썬 2.4 불필요한 왔다.
목록을 정렬하려면 튜플을 위해 ' (,,, < word> < count>)', '수' 와 'word' 의 내림차순으로 문자순으로:
data = [
('betty', 1),
('bought', 1),
('a', 1),
('bit', 1),
('of', 1),
('butter', 2),
('but', 1),
('the', 1),
('was', 1),
('bitter', 1)]
내가 사용하는 방법입니다.
sorted(data, key=lambda tup:(-tup[1], tup[0]))
또한 나를 보기입니다 결과:.
[('butter', 2),
('a', 1),
('betty', 1),
('bit', 1),
('bitter', 1),
('bought', 1),
('but', 1),
('of', 1),
('the', 1),
('was', 1)]
' ()' 보다 '대가리 아템게테르 다소 람다. [1] '대가리 비교적 적은 있지만, 증가 (약 10 - 25%).
(이피통 세션)
>>> from operator import itemgetter
>>> from numpy.random import randint
>>> values = randint(0, 9, 30000).reshape((10000,3))
>>> tpls = [tuple(values[i,:]) for i in range(len(values))]
>>> tpls[:5] # display sample from list
[(1, 0, 0),
(8, 5, 5),
(5, 4, 0),
(5, 7, 7),
(4, 2, 1)]
>>> sorted(tpls[:5], key=itemgetter(1)) # example sort
[(1, 0, 0),
(4, 2, 1),
(5, 4, 0),
(8, 5, 5),
(5, 7, 7)]
>>> %timeit sorted(tpls, key=itemgetter(1))
100 loops, best of 3: 4.89 ms per loop
>>> %timeit sorted(tpls, key=lambda tup: tup[1])
100 loops, best of 3: 6.39 ms per loop
>>> %timeit sorted(tpls, key=(itemgetter(1,0)))
100 loops, best of 3: 16.1 ms per loop
>>> %timeit sorted(tpls, key=lambda tup: (tup[1], tup[0]))
100 loops, best of 3: 17.1 ms per loop
& # 39 에 답이 @stephen 점! 예를 들어보겠습니다 보다 나은 시각화,
>>> gunters = [('2044-04-05', 'parzival'), ('2044-04-07', 'aech'), ('2044-04-06', 'art3mis')]
>>> gunters.sort(key=lambda tup: tup[0])
>>> print gunters
[('2044-04-05', 'parzival'), ('2044-04-06', 'art3mis'), ('2044-04-07', 'aech')]
'키' 는 함수를 호출할 수 있는 변형하려면 collection& # 39 의 항목을 비교. 'like' 콩파레토 방법으로 jave.
키는 생각하신거야 호출 에 전달된 매개 변수는 있다. 여기서 '는' 익명의 함수를 사용하면 람다 (이는 호출). 구문 람다 (λ) 는 말이 람다 이트레이블 이름 뒤에 그러면 한 코드 블록.
아래 예, 우리는 시간을 갖고 있는 정보 목록을 정렬 튜플 abt 특정 이벤트, 배우 이름.
우리는 이 목록에 있는 0th 요소에 의해 정렬 이벤트 시간 발생 - 튜플.
참고 - 's.소르 ([cmp [, 주요 [, 역동기화]]])' 의 항목을 신규인지 배치하십시오.