문제

statlist = [('abc',5,1), ('bzs',66,1), ... ]
sorted(statlist, key=lambda x: int(x[1]))

나는 가장 큰 정수로 분류하고 싶습니다. 이 경우 5와 66. 그러나 작동하지 않는 것 같습니다.

도움이 되었습니까?

해결책

그만큼 sorted 함수는 a 새로운 다음과 같은 기능 결과를 할당해야합니다.

new_list = sorted(statlist, key=lambda x: int(x[1])) 

다른 팁

사용 .sort 제자리에 정렬을위한 메소드 :

statlist = [('abc',5,1), ('bzs',66,1), ... ]
statlist.sort(key=lambda x: int(x[1]))

사용하고 싶다면 sorted, 그런 다음 변수를 재 할당합니다.

statlist = [('abc',5,1), ('bzs',66,1), ... ]
statlist = sorted(statlist, key=lambda x: int(x[1]))

내림차순으로 사용하십시오 reverse:

statlist = [('abc',5,1), ('bzs',66,1), ... ]
statlist = sorted(statlist, key=lambda x: int(x[1]), reverse=True)

그런 다음 사용하는 것이 좋습니다 itemgetter 대신 a lambda :

import operator
statlist = [('abc',5,1), ('bzs',66,1), ... ]
statlist = sorted(statlist, key=operator.itemgetter(1), reverse=True)

.sort 함수로 전달, 키 및 역전 할 수 있습니다.

>>> x.sort(key=lambda x:x[1],reverse=True)
>>> x
[('bzs', 66, 1), ('abc', 5, 1)]
>>>

내적 분류 사용을 위해

statlist.sort(key=lambda x: x[1])

정렬 된 데이터 사용으로 다른 목록을 작성합니다

otherlist = sorted( statlist, key=lambda x: x[1] )
from operator import itemgetter
statlist = [('abc',5,1), ('bzs',66,1), ... ]

# statlist.sort modifiest the statlist, sorted returns a new one
# reverse puts the largest items to the front
statlist.sort(key=itemgetter(1), reverse=True)

Alex의 의견에 따라 SiNTed ()가 "정렬 함수처럼"작동한다고 생각했다.

"정렬 함수처럼"작동한다면 라이브러리에 넣을 것 같지 않습니다.

어쨌든 종류는 없습니다 기능 ... 당신은 정렬을 참조합니다 방법 목록 개체의.

대화식 통역사를 사용한 간단한 데모 :

>>> alist = [3, 2, 1]; x = alist.sort(); print x; print alist
None
[1, 2, 3]
>>> alist = [3, 2, 1]; x = sorted(alist); print x; print alist
[1, 2, 3]
[3, 2, 1]

다음은 팁입니다. 패턴과 유사점을 찾으십시오. 그러나 항상 직관적 인 외삽 법을 확인하십시오. 그 아이디어를 적용하고 싶을 수도 있습니다 reverse 그리고 reversed.

>>> s = [('xyz', 8, 1), ('abc',5,1), ('bzs',66,1) ]
>>> s = sorted(s, key=lambda x: int(x[1]))
>>> s.reverse()
>>> print s
[('bzs', 66, 1), ('xyz', 8, 1), ('abc', 5, 1)]

헤이 어쨌든 배열에 무언가를 저장하고있을 때 나는 질서에 대해 걱정하는 경향이없고 결국 사용합니다. sorted() 예를 들어 이렇게 statlist = sorted(statlist) 그리고 당신이 그것을 원한다면 그것을 가장 크고 작은 것 statlist = sorted(statlist, reverse = True) 그것은 가장 큰 것보다 작은 것의 간단한 방법입니다!

내가 이것을 사용하는 곳에있는 코드 (추출물 만)

    while i <= math.sqrt(intnum):
        if (intnum % i) == 0:
            numbers.insert(0,i)
            numbers.insert(0,int(intnum/i))
            print(i,":", int(intnum/i))
        i += 1
    numbers = sorted(numbers, reverse = True)
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top