[Python] 문자형(Character) 숫자 정렬하기 (feat. sort)

해당 포스트는 파이썬에서 문자형(Character)으로 저장된 숫자 데이터들의 정렬 방법을 소개합니다.

1. INTRO

네이버 지식iN에서 지식을 공유하고 있습니다. 간단한 질문들은 해당 질문에 바로 답변을 드리지만 질문의 내용이 유익하거나 추가 설명이 필요한 경우에는 포스팅을 작성하여 공유드리고 있습니다.

2. 질문

▲ 네이버 지식인 질문

3. 풀이

파이썬(Python)에서는 기본적으로 sort() 함수를 이용하여 데이터의 정렬을 수행합니다. 하지만 질문에서와 같이 숫자 데이터들이 문자형(Character)으로 저장되어 있는 경우에는 정렬의 기준이 '숫자의 크기'가 아니라 '숫자의 순서'로 적용되고 원하는 결과가 나타나지 않게 됩니다. 따라서, 아래에서는 문자형으로 저장된 숫자들을 크기 기준으로 정렬하는 방법을 설명드리겠습니다.

  1. 데이터셋 생성
  2. sort 결과 비교

1. 데이터셋 생성

정렬를 수행할 데이터셋을 아래와 같이 생성하겠습니다. 질문에 올라온 데이터의 길이가 길어 설명에는 일부만 사용하겠습니다.

a = ['489', '1001', '970', '136', '909', '684', '655', '157', '886', '568', '714', '959', '461', '531', '148', '95', '230', '781', '555', '716', '503', '836', '62', '94', '838', '1069', '1016', '1031', '1166', '591', '750', '74', '595', '582', '541', '101', '910', '237', '839', '511', '789', '1035', '1043', '92', '1126', '907', '500', '1039', '1127', '881', '583', '154', '1012', '1080', '755', '957', '572', '766', '922', '1074', '605', '673', '883', '602', '1055', '103', '1046', '1145', '465', '557', '534', '27', '1042', '1108', '75', '97', '1067', '1025', '177', '667', '150', '644', '761', '685', '717', '869', '739', '517', '914', '501', '1056', '37', '202', '663', '219', '649', '127', '969', '493', '918', '911', '168', '96', '671', '1023', '926', '762', '747', '131', '934', '79', '674', '758', '1088', '851', '1134', '679', '68', '505', '1118', '908', '715', '702', '1070', '734', '622', '967', '1014', '902', '1077', '681', '539', '1064', '1084', '640', '659', '695', '1059', '112', '1062', '1111', '524', '191', '1020', '893', '958', '1027', '1114', '700', '1089', '115', '1082', '665', '1000', '709', '866', '28', '963', '878', '711', '817', '597', '468', '527', '199', '492', '654', '721', '1063', '1131', '225', '1006', '565', '99', '904', '664', '651', '1130', '46', '845', '854', '938', '173', '661', '32', '620', '122']

2. sort 함수 비교

아래에서는 숫자를 순서로 인식한 정렬크기로 인식한 정렬의 결과를 보여드리겠습니다. 상황에 맞춰 필요한 정렬 기준을 반영하면 됩니다.

정렬 결과 : 숫자를 순서로 인식

a.sort()
a
['1000',
 '1001',
 '1006',
 '101',
 '1012',
 '1014',
 '1016',
 '1020',
   ... ]

▲ 정렬 결과 : 숫자를 순서로 인식

정렬 결과 : 숫자를 크기로 인식

a.sort(key = int)
a
['27',
 '28',
 '32',
 '37',
 '46',
 '62',
 '68',
 '74',
  ... ]

▲ 정렬 결과 : 숫자를 크기로 인식

4. 마무리

이번 포스트에서는 문자형 숫자의 정렬 방법을 소개해 드렸습니다. 분석하시는 분들의 상황에 맞춰 필요한 정렬 방식을 적용하시고 설명에 사용된 key 옵션의 경우 다양한 기능들이 더 있으니 추가 공부를 해보시면 좋을 것 같습니다.


banner-request-analysis