word = 'abcdeaa'
print(sorted(word, key=word.find))
# >> ['a', 'a', 'a', 'b', 'c', 'd', 'e']
word = 'hello'
word2 = 'steve'
word = sorted(word, key=word.find)
word2 = sorted(word2, key=word2.find)
print(word, word2, sep='\n')
# >> ['h', 'e', 'l', 'l', 'o']
# >> ['s', 't', 'e', 'e', 'v']
key를 word.find로 했을 때 순서대로 확인하면서 등장하는 단어와 동일한 단어로 정렬해준다.
알파벳 순서와 상관없이 첫 등장한 위치부터 중복되는 단어를 순서대로 나열해주는 것이 특징이다.
words = ['a', 'Albert' ,'Chris', 'Brown']
print(sorted(words, key=lambda x : x.lower()))
# >> ['a', 'Albert', 'Brown', 'Chris']
리스트의 경우 위와 같은 방법으로 사용할 수 있다.
# key 기준 정렬
temp = {'c' : 1, 'a' : 5, 'b' : 3, 'd' : 2}
print(sorted(temp.items(), key=lambda x : x[0]))
# >> [('a', 5), ('b', 3), ('c', 1), ('d', 2)]
sorted 이후 튜플 리스트를 반환해준다.
만약 딕셔너리 형태로 다시 받고 싶다면 dict로 감싸주면 된다.
print(dict(sorted(temp.items(), key=lambda x : x[0])))
# >> {'a': 5, 'b': 3, 'c': 1, 'd': 2}
만약 값을 기준으로 정렬하고 싶다면 key=lambda x : x[1]
로 바꿔주면 된다.
위와 같이 여러가지 방법을 적용하여 정렬할 수 있다. 다만 mutable한 자료형이어야 한다.