ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [파이썬] 4. 컬렉션 타입의 이해 - 파이썬 dictionary 와 set
    파이썬 Python 2019. 11. 18. 22:52

    # dictionary

    • 키와 값을 갖는 데이터 구조
    • 키는 내부적으로 hash (:) 값으로 저장
    • 순서를 따지지 않음 -> 인덱스가 없음
    a = [1, 2, 3, 4]
    
    b = {'Korea': 'Seoul', 
         'Canada': 'Ottawa', 
         'USA': 'Washington D.C'}
    c = {0:1, 1:6, 7:9, 8:10}
    
    print(a[2]) #3
    
    print(b[2]) #error
    print(b['Korea']) #Seoul
    #Korea 키에 해당하는 value를 출력
    
    print(c[7]) #9 
    #7은 인덱스가 아니라 키(key), 7에 해당하는 value가 출력됨

     

     

     

    항목의 추가 및 변경

    • 기존에 키가 존재하면, 새로운 값으로 업데이트 (overwritting)
    • 존재하지 않으면 새로운 키와 값이 생성되어 추가됨
    a = {'Korea': 'Seoul',
        'Canada': 'Ottawa',
        'USA': 'Washington D.C'}
        
    #a에 키와 값 추가
    a['Japan'] = 'Tokyo'
    a['Japan'] = 'Kyoto'
    a['Japan2'] = 'Kyoto'
    a['China'] = 'Beijing'
    print(a)
    
    #동일한 키가 중복으로 있을 수 없음. Japan에는 Kyoto로 입력됨. 
    #value는 중복이 여러번 가능.
    
    #{'Korea': 'Seoul', 'Canada': 'Ottawa', 'USA': 'Washington D.C','Japan': 'Kyoto', 'Japan2': 'Kyoto', 'China': 'Beijing'}

     

    • update() : 두 딕셔너리를 병합함. 키가 겹친다면 parameter로 전달되는 키값이 overwrite됨.
    a = {'a':1, 'b':2, 'c': 3}
    b = {'a':2, 'd':4, 'e':5}
    
    a.update(b)
    print(a)
    #똑같은 a가 있을 때 업데이트 된 값으로 overwriting  됨
    #{'a': 2, 'b': 2, 'c': 3, 'd': 4, 'e': 5}

     

    • key 삭제: del 키워드와 pop()함수 이용
    a = {'a': 1, 'b': 2, 'c' : 3}
    
    a.pop('b')
    del a['c']
    
    print(a) #{'a': 1}

     

    • clear(): 딕셔너리의 모든 값을 초기화
    a = {'a': 1, 'b': 2, 'c' : 3}
    a.clear()
    print(a) #{}

     

    • in : key값의 존재 확인
    a = {'a': 1, 'b': 2, 'c' : 3}
    b = [1, 2, 3, 4, 5, 6, 7, 9, 10, 100]
    
    print(100 in b) #True
    print(2 in a) #False
    print('b' in a) #True

     

    • value 접근
      • dict[key]로 접근, 키가 없는 경우 에러발생
      • .get() 함수로 접근, 키가 없는 경우 None 반환
    a = {'a': 1, 'b': 2, 'c' : 3}
    b = [1, 2, 3, 4, 5, 6, 7, 9, 10, 100]
    
    print(a.get('d')) #None
    print(a['d']) #error
    
    #만약 a(['d'])로 값을 확인하고 싶으면 다음과 같이 if문 사용
    if 'd' in a:
    	print(a['d'])
        
        

     

    • 모든 keys와 values 접근
      • keys() : 키만 반환
      • values() : 값만 반환
      • items() : 키와 값의 튜플을 반환
    a = {'a': 1, 'b': 2, 'c' : 3}
    
    
    print(a) #{'a': 1, 'b': 2, 'c': 3}
    
    print(list(a.keys())) #['a', 'b', 'c']
    
    print(list(a.values())) #[1, 2, 3]
    
    print(list(a.items())) #[('a', 1), ('b', 2), ('c', 3)]

     

     

     

    #set

    • dictionary에서 key만 활용하는 데이터 구조로 이해.
    • 수학에서 집합과 동일한 개념
    a = {1, 1, 2, 3, 3, 4, 1, 5}
    print(a) #{1, 2, 3, 4, 5}
    
    
    #set()을 이용해 리스트를 집합으로 변환
    b = [1, 1, 2, 3, 3, 4, 1, 5]
    print(b) #[1, 1, 2, 3, 3, 4, 1, 5]
    
    c = set(b)
    print(c) #{1, 2, 3, 4, 5}
    

     

    • set operations : 수학의 집합 연산과 동일 (교집합, 합집합, 차집합 등)
    a = {1, 2, 3}
    b = {2, 3, 4}
    
    print(a.union(b)) # 합집합 {1, 2, 3, 4}
    
    print(a.intersection(b)) # 교집합 {2, 3}
    
    print(a.difference(b)) # 차집합 {1}
    
    print(a.issubset(b)) #부분 집합  False
    반응형

    댓글

Designed by Tistory.