리스트에서 어떤 중복된 값을 제거해야할 때, 주로 for문을 사용해 왔다.
그러나 코드가 길어지고 별도의 리스트를 생성해야 하는 단점이 있었다.
이번에 간결한 방법을 알게되어 소개한다.
# 기존 사용방법
mylist = ["a", "b", "a", "c", "c"]
new_list = []
for i in mylist:
if i not in new_list:
new_list.append(i)
mylist = new_list
print(mylist)
>>> ['a', 'b', 'c']
아래는 더 간결한 새로운 방법이다.
mylist = ["a", "b", "a", "c", "c"]
mylist = list(dict.fromkeys(mylist))
print(mylist)
>>>["a", "b", "c"]
dict.fromkeys를 통해 리스트에서 중복되는 요소를 제거 할 수 있다.
해설: dict.fromkeys(list) -> 리스트의 요소가 key값이 되고, None이 value값인 딕셔너리를 반환합니다.
mylist = ["a", "b", "a", "c", "c"]
print(dict.fromkeys(mylist))
>>> {'a': None, 'b': None, 'c': None}
즉 리스트를 딕셔너리로 전환하면서, 딕셔너리는 key값의 중복을 허용하지 않기 때문에,
중복된 요소를 하나만 남긴 딕셔너리가 생성된다.
이 딕셔너리를 list()함수에 넣게 되면, 다시 생성된 딕셔너리의 key값만 가지고 있는 리스트가 생성되는 원리이다.
mydict = {'a': None, 'b': None, 'c': None}
print(list(mydict))
>>> ["a", "b", "c"]
'파이썬 > 파이썬 문법(기초)' 카테고리의 다른 글
2차원 리스트 파이써닉하게 출력하기. (0) | 2022.11.12 |
---|