python list.sort() 관련 질문입니다.
조회수 638회
Group3 = list()
Group3.append('가')
Group3.append('다')
Group3.append('라')
Group3.append('나')
Group3.append('c')
Group3.append('a')
Group3.append('b')
Group3.append('羅')
Group3.append('家')
Group3.append('多')
Group3.append('A')
Group3.append('F')
Group3.append('B')
Group3.sort()
print("Group3 문자열에 한글과 영어, 한자를 슬라이싱하여 분할하면 정렬이 될까? >")
Slice1 = Group3[:3]
Slice2 = Group3[4:6]
Slice3 = Group3[7:9]
Slice4 = Group3[10:12]
Slice1.sort()
Slice2.sort()
Slice3.sort()
Slice4.sort()
print(Group3)
기대값 : ['A', 'B', 'F', 'a', 'b', 'c', '家', '羅', '多', '가', '나', '다', '라']
결과값 : ['A', 'B', 'F', 'a', 'b', 'c', '多', '家', '가', '나', '다', '라', '羅']
- 위와같이 기대값과 결과값이 다르게 출력되었습니다.
- python에서 한자는 sort()되지 않는 것인가요?
- 아니라면 한자는 따로 어떠한 방법을 사용해야 하나요?
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
문자캐릭터 하나에 ord 함수를 취하면, 그 문자의 unicode code point 인 숫자가 반환됩니다. 이 수를 기준으로 정렬할 겁니다.
>>> l = ['A', 'B', 'F', 'a', 'b', 'c', '多', '家', '가', '나', '다', '라', '羅'] >>> list(map(ord, l)) [65, 66, 70, 97, 98, 99, 22810, 23478, 44032, 45208, 45796, 46972, 63759] >>>
한자는 우리가 생각하는 한국어의 한자뿐 아니라, 한중일베트남에서 공통으로 사용하는 한자도 있고 복잡하게 유니코드에 정의되어 있을 겁니다.
한자의 한글독음 순으로 정렬하려고 한다면, (마지막 "라"자는 "라"로도 "나"로도 읽을 수 있으니까 좀 애매한데.... 어쨌든), 파이썬에 hanja 라는 패키지가 있으니 그걸 이용해서 한글로 변환한 값으로 소팅하면 대충 원하는 게 될 듯 합니다.
댓글 입력