Data Science/Python

[SWEA] 자료구조 셋, 딕셔너리

에너지_2 2025. 2. 9. 17:55
728x90
반응형

※ 출처: https://swexpertacademy.com/


셋 Set

- 중복되지 않는 데이터를 만들기 위해 사용하는 자료구조

- 인덱스 제공하지 않음 -> 순서의 개념이 없음

 

📒교집합 , 합집합, 차집합

data_set1 = {1, 2, 2, 3, 4, 4, 5, 6, 7, 7, 7, 11}
data_set2 = {2, 3, 5, 9, 11, 12, 15}

print(data_set1 & data_set2) #교집합
print(data_set1 | data_set2) #합집합
print(data_set1 - data_set2) #차집합
print(data_set2 - data_set1) #차집합

print(data_set1.intersection(data_set2)) #교집합
print(data_set1.union(data_set2)) #합집합
print(data_set1.difference(data_set2)) #차집합
print(data_set2.difference(data_set1)) #차집합

"""
{11, 2, 3, 5}
{1, 2, 3, 4, 5, 6, 7, 9, 11, 12, 15}
{1, 4, 6, 7}
{9, 12, 15}
"""

 

📒 추가

data_set = set(range(3))
data_set.add(4)
data_set.add(4)
print(data_set) #{0, 1, 2, 4}

data_set.update({4, 5, 6})
print(data_set) #{0, 1, 2, 4, 5, 6}

 

📒 제거

data_set = set( range(1, 11))

# 해당 data 만 제거
data_set.remove(9)
data_set.remove(2)

print(data_set) #{1, 3, 4, 5, 6, 7, 8, 10}

# 첫번째 항목 제거
data_set.pop()  
print(data_set) #{3, 4, 5, 6, 7, 8, 10}

data_set.clear() #전체 제거

 

📒데이터 확인

data_set1 = {1, 2, 3, 4, 5}
data_set2 = {2, 3}

# a.issuperset(b) : a가 b를 전부 포함하는 집합인지
print(data_set1.issuperset(data_set2)) #True

# a.issubset(b) : a가 b에 전부 포함되는 집합인지
print(data_set2.issubset(data_set1))   #True

 

 

딕셔너리 Dictionary

- 키 데이터와 관련된 데이터를 연결한 자료구조

📒tuple, list, set -> dictionary

# tuple -> dictionary
data_tuple = ( ('lee',20), ('kim',45), ('kang',11) )
data_dic = dict(data_tuple)

# list -> dictionary
data_list = [ ('lee',20), ('kim',45), ('kang',11) ]
data_dic = dict(data_list)

# set -> dictionary
data_set = { ('lee',20), ('kim',45), ('kang',11) }
data_dic = dict(data_list)
print(data_dic) #{'lee': 20, 'kim': 45, 'kang': 11}


📒 추가

data_dic1 = {
    'lee' : 20,
    'kim' : 45,
    'jang' : 35
}

data_dic1['eun'] = 40
# {'lee': 20, 'kim': 45, 'jang': 35, 'eun': 40}

data_dic1.update({'sin':11, 'won':23})
# {'lee': 20, 'kim': 45, 'jang': 35, 'eun': 40, 'sin': 11, 'won': 23}

 

📒변경

data_dic1 = {'hong':20, 'lee':11, 'kang':44}

data_dic1['kang'] = 40
print(data_dic1) # {'hong': 20, 'lee': 11, 'kang': 40}

data_dic1.update({'hong':22, 'lee':10})
print(data_dic1) # {'hong': 22, 'lee': 10, 'kang': 40}

 

📒제거

data_dic1 = {'hong':20, 'lee':11, 'kang':44}

del data_dic1['hong']
print(data_dic1) #{'lee': 11, 'kang': 44}

data_dic1.pop('lee')
print(data_dic1) #{'kang': 44}

data_dic1.clear()

 

📒데이터 확인

data_dict1 = {
    'lee':10,
    'kim':20,
    'hong':30
}

#딕셔너리 항목이 있는 지 검사
print("'lee' in data_dict1 => {0}".format('lee' in data_dict1)) #True
print(f"'lee' in data_dict1 => {'lee' in data_dict1}") #True

print(f"'jang' not in data_dict1 => {'jang' not in data_dict1}") #True

#튜플로 구성
print(f"{type(data_dict1.items())} {data_dict1.items()}")
#<class 'dict_items'> dict_items([('lee', 10), ('kim', 20), ('hong', 30)])

#문자열로 구성
print(f"{type(data_dict1.keys())} {data_dict1.keys()}")
#<class 'dict_keys'> dict_keys(['lee', 'kim', 'hong'])

#정수로 구성
print(f"{type(data_dict1.values())} {data_dict1.values()}")
#<class 'dict_values'> dict_values([10, 20, 30])

 

📒for 

for item in data_dict1.items():
    print(f"{item[0]}, {item[1]}")
    
for key, value in data_dict1.items():
    print(f"{key}, {value}")
    
# 결과 동일
lee, 10
kim, 20
hong, 30

 

728x90
반응형