본문 바로가기

알고리즘

[python] 문자열을 알파벳 순으로 정렬

반응형

문자열 내의 문자들을 알파벳 순으로 정렬하고 싶으면 어떻게 해야 할까요?

먼저 숫자 정렬에 이용했던 sort() 함수를 이용해보면, 문자열은 sort라는 함수를 사용할 수 없다는 에러를 만나게 됩니다.

string = "banana"
string.sort()

>> AttributeError: 'str' object has no attribute 'sort'
즉, sort 함수를 쓰기 위해서는 list를 만들어 사용해야 하기 때문에, 문자열을 각 문자를 원소로 갖는 list로 변환 후 sort 함수를 이용하면 정렬이 가능합니다. 정렬 이후에 다시 list를 join 함수를 이용해 문자열로 만들어 주면 해결이 가능합니다.

string = "banana"
arr = list(string)
arr.sort()
print(arr) # ['a', 'a', 'a', 'b', 'n', 'n']
sorted_str = ''.join(arr)
print(sorted_str) # aaabnn
sorted() 함수는 어떨까요? sorted 함수의 경우에는, 문자열을 함수 인자로 넣더라도, 이를 성공적으로 정렬해줍니다. 다만, 결과물이 list로 나오는 것을 확인할 수 있습니다.

string = "banana"
sorted_arr = sorted(string)
print(sorted_arr) # ['a', 'a', 'a', 'b', 'n', 'n']
따라서 sorted 함수를 이용한 이후에 다시 join함수를 이용해 문자열을 만들어주면 됩니다.

string = "banana"
sorted_arr = sorted(string)
print(sorted_arr) # ['a', 'a', 'a', 'b', 'n', 'n']
sorted_str = ''.join(sorted_arr)
print(sorted_str) # aaabnn

반응형