알파벳순으로 파이썬 데이터 구조 정렬 목록


159

파이썬의 데이터 구조와 관련하여 약간 혼란 스럽습니다. (), []{}. 간단한 목록을 정렬하려고합니다. 아마도 데이터 유형을 식별 할 수 없으므로 정렬하지 못했습니다.

내 목록은 간단합니다. ['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue']

내 질문은 이것이 어떤 유형의 데이터이며 단어를 알파벳순으로 정렬하는 방법입니다.


목록을 정렬하려면 "list = [ 'Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue'] list.sort () print list"를 사용할 수 있습니다.
kannanrbk

[]내장 데이터 유형을 묶습니다 list( tutorialspoint.com/python/python_lists.htm 참조 ). 리스트는 단지 값들의 그룹 일뿐입니다 (그들은 반복 가능한 다른 객체, 즉 중첩리스트를 포함 할 수 있습니다). ()내장을 포함 tuple합니다. 변경할 수 없습니다 (변경 불가). ( tutorialspoint.com/python/python_tuples.htm 참조 ) 그리고 {}내장을 포함 dictionary합니다. '키'가 단어이고 '값'이 정의 인 사전 (단어의 경우)과 유사합니다. ( tutorialspoint.com/python/python_dictionary.htm 참조 )
Rushy Panchal

답변:


231

[]나타내고 목록 , ()나타내고 튜플{}나타낸다 사전 . 공식 파이썬 튜토리얼 은 파이썬 프로그래밍의 기본 사항이므로 살펴보아야합니다 .

당신이 가진 것은 문자열 목록입니다. 다음과 같이 정렬 할 수 있습니다.

In [1]: lst = ['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue']

In [2]: sorted(lst)
Out[2]: ['Eflux', 'Intrigue', 'Sedge', 'Stem', 'Whim', 'constitute']

보시다시피, 대문자로 시작하는 단어는 소문자로 시작하는 단어보다 우선합니다. 독립적으로 정렬하려면 다음을 수행하십시오.

In [4]: sorted(lst, key=str.lower)
Out[4]: ['constitute', 'Eflux', 'Intrigue', 'Sedge', 'Stem', 'Whim']

다음을 수행하여 목록을 역순으로 정렬 할 수도 있습니다.

In [12]: sorted(lst, reverse=True)
Out[12]: ['constitute', 'Whim', 'Stem', 'Sedge', 'Intrigue', 'Eflux']

In [13]: sorted(lst, key=str.lower, reverse=True)
Out[13]: ['Whim', 'Stem', 'Sedge', 'Intrigue', 'Eflux', 'constitute']

참고 : Python 3을 사용 str하는 경우 사람이 읽을 수있는 텍스트가 포함 된 모든 문자열에 올바른 데이터 유형입니다. 그러나 여전히 Python 2로 작업 해야하는 경우 Python 2의 데이터 유형 unicode이 아닌 유니 코드 문자열을 처리 할 수 ​​있습니다 str. 이 경우 유니 코드 문자열 목록이 있으면 key=unicode.lower대신 대신 작성해야합니다 key=str.lower.


find_one()MongoDB 데이터베이스 의 pymongo 결과 에 대한 두 번째 예를 사용하면 오류가 발생 descriptor 'lower' requires a 'str' object but received a 'unicode'합니다. 결과는 문자열 배열이며 다음과 같이 구현 results['keywords'] = sorted(keywords['keywords'], key=str.lower)됩니다. 아무도 이것을 해결하는 방법을 알고 있습니까?
user1063287

@ user1063287 늦은 응답으로 죄송합니다. 귀하의 경우 key=unicode.lower대신 대신 작성해야합니다 key=str.lower. 바이트 문자열이 아닌 유니 코드 문자열을 처리하기 때문입니다. 이에 대한 더 자세한 정보, 특히 파이썬 2와 3의 차이점에 대해서는 공식 유니 코드 하우투 를 참조하십시오.
pemistahl

32

파이썬에는이라는 내장 함수가 있습니다 sorted.이 함수는 공급하는 반복 가능한 항목 (예 : list ( [1,2,3]); dict ( {1:2,3:4}, 정렬 된 키 목록을 반환하지만 집합 ( {1,2,3,4)) 에서 정렬 된 목록을 제공합니다. 또는 튜플 ( (1,2,3,4))).

>>> x = [3,2,1]
>>> sorted(x)
[1, 2, 3]
>>> x
[3, 2, 1]

목록 sort에는 정렬을 수행 하는 메소드가 있습니다 (x.sort ()는 None을 반환하지만 x 객체를 변경합니다).

>>> x = [3,2,1]
>>> x.sort()
>>> x
[1, 2, 3]

둘 다 key인수를 취하는데 , 정렬 할 항목을 변경하는 데 사용할 수있는 호출 가능 (함수 / 람다)이어야합니다.
예를 들어, (key,value)값으로 정렬 된 dict에서 -pairs 목록을 가져 오려면 다음 코드를 사용할 수 있습니다.

>>> x = {3:2,2:1,1:5}
>>> sorted(x.items(), key=lambda kv: kv[1])  # Items returns a list of `(key,value)`-pairs
[(2, 1), (3, 2), (1, 5)]

12

파이썬 목록을 다루고 있으며 정렬하는 것만 큼 쉽습니다.

my_list = ['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue']
my_list.sort()

11

내장 sorted기능을 사용할 수 있습니다 .

print sorted(['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue'])

4

ListName.sort()알파벳순으로 정렬합니다. reverse=False/True대괄호를 추가 하여 항목 순서를 반대로 바꿀 수 있습니다 .ListName.sort(reverse=False)


1
Ruby에 대한 주석입니까?
allanberry

3
>>> a = ()
>>> type(a)
<type 'tuple'>
>>> a = []
>>> type(a)
<type 'list'>
>>> a = {}
>>> type(a)
<type 'dict'>
>>> a =  ['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue'] 
>>> a.sort()
>>> a
['Eflux', 'Intrigue', 'Sedge', 'Stem', 'Whim', 'constitute']
>>> 
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.