{ key : value }
key : 값을 찾기 위해 넣어 주는 데이터. 변할 수 없는 값만 사용.
value : 찾고자 하는 데이터
dic = {'name':'가연', '나이':25}
# 딕셔너리 쌍 추가하기
dic['직업'] = '학생'
리스트에서 값을 얻기 위해 리스트[인덱스] = 값
인덱싱을 사용한 것 처럼 딕셔너리['key'] = value
로 사용할 수 있음.
딕셔너리의 장점은 원하는 값을 빠르게 찾아냄. 값을 찾을 때 리스트에서 사용한다면 for문을 사용해서 모든 데이터를 순회 후 찾아낼 수 있기 때문에 많은 성능 차이가 발생할 수 있음.
✔️ key와 value들로 이루어진 리스트를 반환하고 싶다면?
list(딕셔너리.keys())
list(딕셔너리.values())
list(딕셔너리.items())
# 혹은 약간의 변형을 주기 위해 for문을 사용하여
accounts = {'7ryean' : '유가연' }
for id, username in accounts.items() :
print(id + '-' + username)
# 만약 리스트로 묶어주지 않는다면?
# dict_keys(['a', 'b', 'c']) 와 같이 반환됨
✔️ 딕셔너리 내 key값의 존재 유무를 확인하고 싶다면?
'7ryean' in accounts
> True
'jacob' in accounts
> False
집합은 여러가지 원소가 모여 있지만 중복이 없고 순서가 없음. 따라서 집합의 값을 인덱싱으로 접근하려면 리스트나 튜플로 변환 해야함.
num_set = {1, 3, 5, 7}
s1 = set([1, 2, 3, 4]}
# 비어있는 집합 자료는
s = set()
딕셔너리와 달리 :
가 없음.
num_set.add(9)
num_set.update([3, 5, 14])
num_set.remove(7)
num_set.discard(17)
❓ remove와 discard의 차이점은?
remove는 무조건 집합 내에 삭제하려는 값이 존재해야 하고 존재하지 않을 경우 에러 발생. discard는 있으면 삭제하고 없어도 아무런 문제가 없음.
✔️ 집합 내 값의 존재 유무와 크기를 확인하고 싶다면?
3 in num_set
> True
len(num_set)
> 5
서로 다른 여러개의 집합 사이에서 집합 간의 관계를 나타내는, 또 새로운 집합을 만들어내기도 하는 연산.
s1 = {1, 3, 5, 7}
s2 = {1, 3, 9, 27}
집합 A와 B가 존재할 때 A, B에 모두 속하는 집합.
intersection = s1 & s2
집합 A 혹은 B에 속하는 집합.
union = s1 | s2
집합 A에 속하지만 B에는 속하지 않는 집합.
diff = s1 - s2
집합 A에 속하고 B에도 속하지만 A, B 모두에 속하지는 않는 집합.
xor = s1 ^ s2
.txt .doc
와 같은 파일 형식으로 내부는 딕셔너리와 매우 유사하게 구성되어 있음. 웹 환경에서 데이터를 주고 받는 가장 표준적인 방식으로 장점또한 딕셔너리와 비슷함. 키를 이용하여 원하는 데이터만 빠르게 추출하고 데이터가 쉽게 오염되지 않지만 용량이 조금 크다는 단점이 있음.
json을 딕셔너리로 변환할 때는 loads()
, 딕셔너리를 json으로 변환할 때는 dumps()
JSON과 같은 파일 형식. Comma Separated Value, 콤마로 구분되어져 있는 값. 각 열이 특정한 의미를 가짐. 모든 데이터가 key와 value가 있던 json과는 다름. key가 없기 때문에 각 열이 어떤 값을 나타내는지 알 수 없으면 해석할 수 없음. 콤마(,) 말고 (|) 로 구분되어 있기도 함. 표로 시각화 하기 쉽고 value들만 저장하기 때문에 용량이 작음. 만약 값에 콤마(,)가 들어있다면 구분하는 콤마(,)와 헷갈릴 수 있기 때문에 값에 ""를 사용함. 이래서 데이터 오염에 취약하기도함.
import csv
with open('파일이름.csv') as file :
reader = csv.reader(file, delimiter = '구분자(,)')
for 데이터 in reader :
print(데이터)