ProgramingTip

어디까지입니까?

bestdevel 2020. 12. 7. 20:30
반응형

어디까지입니까?


나는 현재 설치를 처음 접 했고이 질문에 갇혀있어 올바른 답을 수 없습니다.

질문 : 단어 목록이 주어지면 길이 (가장 긴 것에서 가장 짧은 것) 순서대로 동일한 단어로 목록을 반환합니다. 두 번째 정렬 기준은 알파벳순이어야합니다. 힌트 : 두 가지 기능을 생각해야합니다.

이것이 내가 지금까지 가지고있는 것입니다.

def bylength(word1,word2):
    return len(word2)-len(word1)

def sortlist(a):
    a.sort(cmp=bylength)
    return a

내림차순 인이 정렬에 두 번째 기준을 적용하는 방법을 모르겠습니다.


다음과 같이 두 단계로 수행 할 수 있습니다.

the_list.sort() # sorts normally by alphabetical order
the_list.sort(key=len, reverse=True) # sorts by descending length

Python의 안정은 안정적입니다. 즉, 길이별로 목록을 정렬하면 길이가 같을 때 요소가 알파벳 순서로 남습니다.

다음과 같이 할 수도 있습니다.

the_list.sort(key=lambda item: (-len(item), item))

일반적으로 cmp필요하지 않습니다. key사용하기 소지품.


n = ['aaa', 'bbb', 'ccc', 'dddd', 'dddl', 'yyyyy']

for i in reversed(sorted(n, key=len)):
    print i

yyyyy dddl dddd ccc bbb aaa

for i in sorted(n, key=len, reverse=True):
     print i

yyyyy dddd dddl aaa bbb ccc


-Sort your list by alpha order, then by length.

See the following exmple:

>>> coursesList = ["chemistry","physics","mathematics","art"]
>>> sorted(coursesList,key=len)
['art', 'physics', 'chemistry', 'mathematics']
>>> coursesList.append("mopsosa")
>>> sorted(coursesList,key=len)
['art', 'physics', 'mopsosa', 'chemistry', 'mathematics']
>>> coursesList.sort()
>>> sorted(coursesList,key=len)
['art', 'mopsosa', 'physics', 'chemistry', 'mathematics']

Jochen Ritzel은 cmp가 필요하지 않다고 말했고 실제로는 훌륭한 사용 사례입니다! cmp를 사용하면 길이별로 정렬 한 다음 동시에 알파벳순으로 정렬 할 수있어 두 번 정렬하는 데 필요한 시간의

def cmp_func(a, b):
    # sort by length and then alphabetically in lowercase
    if len(a) == len(b):
        return cmp(a, b)
    return cmp(len(a), len(b))

sorted_the_way_you_want = sorted(the_list, cmp=cmp_func)

예 :

>>> the_list = ['B', 'BB', 'AA', 'A', 'Z', 'C', 'D']
>>> sorted(the_list, cmp=cmp_func)
['A', 'B', 'C', 'D', 'Z', 'AA', 'BB']

참고 목록 인 경우 대문자와 소문자의 혼합 교체 cmp(a, b)cmp(a.lower(), b.lower()) '는'> 'Z'정렬로 .

python3에서는 __lt__스타일 비교 함수가 정의되어 있거나 당신을 위해 그렇게해야 functools.cmp_to_key() 합니다.

참고 URL : https://stackoverflow.com/questions/4659524/how-to-sort-by-length-of-string-followed-by-alphabetical-order

반응형