'mapping elements in a list using dictionary'에 해당되는 글 1건

  1. 2023.01.02 [Python] 리스트 원소 데이터 유형 변환, 원소 값 변환, 빼기, 정렬

Python 리스트 자료형의 메소드와 내장함수에 대해서는 https://rfriend.tistory.com/330 를 참고하세요. 

 

이번 포스팅에서는 리스트(List) 자료형에 대한 유용한 활용 팁 네가지를 소개하려고 합니다. 

 

(1) 리스트의 문자형 원소를 숫자형 원소로 바꾸기 (혹은 그 반대)

(2) 리스트의 원소를 사전형의 Key:Value 기준으로 매핑하여 변환하기

(3) 리스트에서 또 다른 리스트의 겹치는 원소를 빼기

(4) 리스트 원소 정렬하기 (내림차순, 오름차순)

 

 

(1) 리스트의 문자형 원소를 숫자형 원소로 바꾸기 (혹은 그 반대)

 

list(map(data type, list)) 으로 리스트 내 원소의 데이터 유형을 변환할 수 있습니다. 아래는 순서대로 리스트 내 문자형 원소를 숫자형으로 변환, 숫자형 원소를 문자형 원소로 변환한 예입니다. 

 

## convert a list with string-type elements into a list with numeric-type elements
list(map(int, ['1', '2', '3']))  # 문자형 원소
# [1, 2, 3] # --> 숫자형으로 변환됨


## convert a list with numeric-type elements into a list with string-type elements
list(map(str, [1, 2, 3]))  # 숫자형 원소
# ['1', '2', '3'] # --> 문자형으로 변환됨

 

 

 

(2) 리스트의 원소를 사전형의 Key:Value 기준으로 매핑하여 변환하기

 

리스트 내 원소를 다른 값으로 변환할 때 사전형(Dictionary)의 Key:Value 매핑을 이용하면 편리합니다. List Comprehension 을 이용해서 리스트 원소별로 for loop 을 돌면서 Dictionary 의 Dict[Key] 로 Value에 접근해서 키별로 값을 매핑해서 변환된 값으로 새로운 리스트를 만들어줍니다

 

converting elements in a list using Dictionary(Key: Value)

 

## a List
my_list = ['c', 'a', 'd', 'b']


## a Dictionary, which will be used for mapping, converting
my_dict = {
    'a': 1, 
    'b': 2, 
    'c': 3, 
    'd': 4
}

## accessing the value in a Dictionary using the key
my_dict['a']
# 1


## converting elements in a list using a Dictionary (Key: Value)
[my_dict[k] for k in my_list]
# [3, 1, 4, 2]

 

 

 

(3) 리스트에서 또 다른 리스트의 겹치는 원소를 빼기

 

리스트와 리스트 간 중복되는 원소 값 빼기는 TypeError: unsupported operand type(s) for -: 'list' and 'list' 에러를 반환합니다. 

 

## sample lists
a = [1, 2, 3, 4, 5]
b = [4, 5, 6, 7, 8]


## TypeError: unsupported operand type(s) for -: 'list' and 'list'
a - b
# ---------------------------------------------------------------------------
# TypeError                                 Traceback (most recent call last)
# <ipython-input-36-4dfa3698e4b8> in <module>
# ----> 1 a- b

# TypeError: unsupported operand type(s) for -: 'list' and 'list'

 

 

리스트 간 겹치는 값을 제거하려면 먼저 리스트를 Set 으로 변환을 해주고, 두 개의 Sets 간에 빼기를 해준 다음에, 집합 간 빼기 가 된 결과를 다시 list() 를 사용해서 리스트로 최종 변환해주면 됩니다. 

 

## substraction between lists using set
list(set(a) - set(b))
# [1, 2, 3]


list(set(b) - set(a))
# [8, 6, 7]

 

 

 

(4) 리스트 원소 정렬하기 (내림차순, 오름차순)

 

list.sort() 메소드를 사용해서 리스트 원소 (숫자형) 를 오름차순으로 정렬할 수 있습니다. 

내림차순 정렬을 하려면 list.sort(reverse=True) 처럼 옵션을 추가해주면 됩니다. 

## 리스트 원소 정렬
c = [8, 6, 7]
c.sort()
c
# [6, 7, 8]



## 리스트 원소 역순으로 정렬
c.sort(reverse=True)
c
# [8, 7, 6]

 

 

이번 포스팅이 많은 도움이 되었기를 바랍니다. 

행복한 데이터 과학자 되세요!  :-)

 

 

728x90
반응형
Posted by Rfriend
,