본문 바로가기
PROGRAMMING/PYTHON

[Python] 세트, 딕셔너리 관련 함수

by 안녕나는현서 2022. 1. 10.
728x90

세트(set)

  • mutable, unorderd, iterable

 

[값 추가]

  • .add(x) : x를 세트에 추가
a = {'사과', '바나나', '수박'}
a.add('포도')
print(a)     # {'포도', '바나나', '사과', '수박'}
  • .update(iterable) : 여러 값을 추가
a = {'사과', '바나나', '수박'}
a.update({'토마토', '토마토', '딸기'}, {'포도', '레몬'})
print(a)     # {'포도', '토마토', '사과', '레몬', '수박', '딸기', '바나나'}

 

[값 삭제]

  • .remove(x) : x를 삭제하고, 없으면 KeyError 발생
a = {'사과', '바나나', '수박'}
a.remove('사과')
print(a)          # {'바나나', '수박'}
a.remove('애플')  # KeyError
  • .discard(x) : x를 삭제하고, 없어도 에러 발생하지 않음
a = {'사과', '바나나', '수박'}
a.discard('포도')
a.discard('수박')
print(a)          # {'바나나', '사과'}
  • .pop() : 임의의 원소를 제거해 반환, 비어있는 set에 적용하면 KerError
a = {'사과', '바나나', '수박', '아보카도'}
a.pop()
print(a)         # {'아보카도', '사과', '수박'}

 

 

딕셔너리(dictionary)

  • immutable, unordered, iterable

 

[조회]

  • .get(key[, default]) : key를 통해 value를 가져옴, KerError가 나지 않음, default는 None, default값을 설정할 수 있음
my_dict = {'apple': '사과', 'banana': '바나나', 'melon': '멜론'}
my_dict.get('apple')    # '사과'

# get 메서드 없이 딕셔너리 my_dict의 key 'pineapple'의 value 출력 -> 오류
my_dict['pineapple']

# get 메서드로 딕셔너리 my_dict의 key 'pineapple'의 value를 출력 
my_dict.get('pineapple')        # 아무 값도 나오지 않음
my_dict.get('pineapple', 0)     # 0 반환

 

[추가 및 삭제]

  • .update() : 값을 제공하는 key, value로 덮어씀, key값이 문자열이어도 'apple'이 아닌, apple로 적어야 함
my_dict = {'apple': '사과', 'banana': '바나나', 'melon': '멜론'}
my_dict.update(apple='사과아')
my_dict     # {'apple': '사과아', 'banana': '바나나', 'melon': '멜론'}
  • .pop(key[, default] : 딕셔너리에 key가 있으면 제거하고 그 값을  돌려줌, 없으면 default 반환
    default가 없는 상태에서 딕셔너리에 없으면 KeyError
my_dict = {'apple': '사과', 'banana': '바나나'}
print(my_dict.pop('apple'))     # 사과
print(my_dict)                  # {'banana': '바나나'}

my_dict.pop('melon')            # KeyError
my_dict.pop('melon', 0)         # 0

 

[딕셔너리 순회]

# 0. dictionary 순회 (key 활용)
for key in dict:
    print(key)
    print(dict[key])


# 1. .keys() 활용
for key in dict.keys():
    print(key)
    print(dict[key])


# 2. .values() 활용
# 이 경우 key는 출력할 수 없음
for val in dict.values():
    print(val)


# 3. .items() 활용
for key, val in dict.items():
    print(key, val)

 

[딕셔너리 구축하기]

# 1. dict[key]로 접근하는 방법
my_dict = {}

for title in book_title :
    if title not in my_dict :
        my_dict[title] = 1
    else :
        my_dict[title] += 1
        
# 2. count 메서드를 활용
my_dict = {}

for title in book_title :
    my_dict[title] = book_title.count(title)
    
# 3. get 메서드를 활용
my_dict = {}

for title in book_title :
    my_dict[title] = my_dict.get(title, 0) + 1

 

[Dictionary comprehension]

blood_types = {'A': 40, 'B': 11, 'AB': 4, 'O': 45}

{'-' + key : value for key in blood_types.keys() for value in blood_types.values()}

dusts = {'서울': 72, '인천': 82, '제주': 29, '동해': 45}

{key : ('나쁨' if value > 60 else '보통') for key, value in dusts.items()}
# 출력 : {'서울': '나쁨', '인천': '나쁨', '제주': '보통', '동해': '보통'}

{key : ('매우나쁨' if value > 150 else '나쁨' if value > 60 else '보통' if value > 30 else '좋음') for key, value in dusts.items()}
# 출력 : {'서울': '나쁨', '인천': '나쁨', '제주': '좋음', '동해': '보통'}

 

728x90

댓글