[Python]딕셔너리(Dict)

파이썬의 기본 자료구조 딕셔너리에 대해 알아보자

범용적으로 가장 많이 쓰이는 자료구조로, 자바의 Map에 해당한다. Json과 형태가 동일하다.

# Dictionary (딕셔너리)
# 범용적으로 가장 많이 사용
# 순서없음(최신 버전에서는 순서 유지 가능), 키 중복 불가, 수정가능, 삭제가능

# 선언
a = {'name': 'jigi', 'phone': '02-123-1234', 'birth': '821220'}  # key = value 쌍으로 이뤄짐
b = {1: 'jigi'}
c = {'arr': [1, 2, 3, 4]}
d = {
    'name': 'jigi',
    'city': 'seoul',
    'age': 20,
    'grade': 'S',
    'status': True
}

# 사용하기 번거로워서 잘 안쓰임
e = dict([
    ('name', 'jigi'),
    ('city', 'seoul'),
    ('age', 20),
    ('grade', 'S'),
    ('status', True)
])

f = dict(
    name='jigi',
    city='seoul',
    age=20,
    grade='S',
    status=True
)

# 출력
print(type(a), type(b), type(c), type(d), type(e), type(f))
print(a)
print(b)
print(c)
print(d)
print(e)
print(f)
print(id(d), id(e), id(f))  # 서로다른 값이 출력
print()

# 출력
print('')
print("a = ", a['name'])  # a['name1'] 으로 접근 시 속성이 없다는 KeyError이 발생함
print("a = ", a.get('name'))  # a['name'] 처럼 속성명으로 접근하는 방식보다 더 자주 사용됨, a.get('name1') 처럼 존재하지 않는 key로 접근시 None 반환됨
print("b = ", b[1])
print("c = ", c.get('arr'))
print("f = ", f.get('age'))

# 딕셔너리 추가
a['address'] = '서울특별시 강동구'
print("a = ", a)
a['address'] = '서울특별시 강동구 천호동'
print("a = ", a)

# 딕셔너리 길이 (key 개수)
print("a = ", len(a))
print("b = ", len(b))
print("c = ", len(c))
print("d = ", len(d))
print()

# dict_keys, dict_values, dict_itmes : 반복문(__iter__)에서 사용가능
print("a = ", a.keys())
print("b = ", b.keys())
print("c = ", c.keys())
print("d = ", d.keys())
print("a = ", list(a.keys()))  # list로 형변환
print("b = ", list(b.keys()))
print()

print("a = ", a.values())
print("b = ", b.values())
print("c = ", c.values())
print("d = ", d.values())
print("a = ", list(a.values()))  # list로 형변환
print("b = ", list(b.values()))
print()

print("a = ", a.items())
print("b = ", b.items())
print("c = ", c.items())
print("d = ", d.items())
print("a = ", list(a.items()))  # list로 형변환
print("b = ", list(b.items()))
print()

print("a = ", a.pop('name'))
print("a = ", a)
print("c = ", c.pop('arr'))
print("c = ", c)
print()

print("f = ", f)
print("f = ", f.popitem())
print("f = ", f)
print("f = ", f.popitem())
print("f = ", f)
print("f = ", f.popitem())  # 더이상 꺼내올 수 없을 경우 에러가 발생
print("f = ", f)
print()

print("a = ", a)
print("a = ", 'birth' in a)
print("c = ", d)
print("c = ", 'birth' in c)
print()

# 수정
print("a = ", a)
a['add'] = 'Add date'
print("a = ", a)
a.update(birth='820910')
print("a = ", a)
temp = {'address': "충남 금산군"}
a.update(temp)
print("a = ", a)

결과:

<class 'dict'> <class 'dict'> <class 'dict'> <class 'dict'> <class 'dict'> <class 'dict'>
{'name': 'jigi', 'phone': '02-123-1234', 'birth': '821220'}
{1: 'jigi'}
{'arr': [1, 2, 3, 4]}
{'name': 'jigi', 'city': 'seoul', 'age': 20, 'grade': 'S', 'status': True}
{'name': 'jigi', 'city': 'seoul', 'age': 20, 'grade': 'S', 'status': True}
{'name': 'jigi', 'city': 'seoul', 'age': 20, 'grade': 'S', 'status': True}
2105002630016 2105006060992 2105006060928


a =  jigi
a =  jigi
b =  jigi
c =  [1, 2, 3, 4]
f =  20
a =  {'name': 'jigi', 'phone': '02-123-1234', 'birth': '821220', 'address': '서울특별시 강동구'}
a =  {'name': 'jigi', 'phone': '02-123-1234', 'birth': '821220', 'address': '서울특별시 강동구 천호동'}
a =  4
b =  1
c =  1
d =  5

a =  dict_keys(['name', 'phone', 'birth', 'address'])
b =  dict_keys([1])
c =  dict_keys(['arr'])
d =  dict_keys(['name', 'city', 'age', 'grade', 'status'])
a =  ['name', 'phone', 'birth', 'address']
b =  [1]

a =  dict_values(['jigi', '02-123-1234', '821220', '서울특별시 강동구 천호동'])
b =  dict_values(['jigi'])
c =  dict_values([[1, 2, 3, 4]])
d =  dict_values(['jigi', 'seoul', 20, 'S', True])
a =  ['jigi', '02-123-1234', '821220', '서울특별시 강동구 천호동']
b =  ['jigi']

a =  dict_items([('name', 'jigi'), ('phone', '02-123-1234'), ('birth', '821220'), ('address', '서울특별시 강동구 천호동')])
b =  dict_items([(1, 'jigi')])
c =  dict_items([('arr', [1, 2, 3, 4])])
d =  dict_items([('name', 'jigi'), ('city', 'seoul'), ('age', 20), ('grade', 'S'), ('status', True)])
a =  [('name', 'jigi'), ('phone', '02-123-1234'), ('birth', '821220'), ('address', '서울특별시 강동구 천호동')]
b =  [(1, 'jigi')]

a =  jigi
a =  {'phone': '02-123-1234', 'birth': '821220', 'address': '서울특별시 강동구 천호동'}
c =  [1, 2, 3, 4]
c =  {}

f =  {'name': 'jigi', 'city': 'seoul', 'age': 20, 'grade': 'S', 'status': True}
f =  ('status', True)
f =  {'name': 'jigi', 'city': 'seoul', 'age': 20, 'grade': 'S'}
f =  ('grade', 'S')
f =  {'name': 'jigi', 'city': 'seoul', 'age': 20}
f =  ('age', 20)
f =  {'name': 'jigi', 'city': 'seoul'}

a =  {'phone': '02-123-1234', 'birth': '821220', 'address': '서울특별시 강동구 천호동'}
a =  True
c =  {'name': 'jigi', 'city': 'seoul', 'age': 20, 'grade': 'S', 'status': True}
c =  False

a =  {'phone': '02-123-1234', 'birth': '821220', 'address': '서울특별시 강동구 천호동'}
a =  {'phone': '02-123-1234', 'birth': '821220', 'address': '서울특별시 강동구 천호동', 'add': 'Add date'}
a =  {'phone': '02-123-1234', 'birth': '820910', 'address': '서울특별시 강동구 천호동', 'add': 'Add date'}
a =  {'phone': '02-123-1234', 'birth': '820910', 'address': '충남 금산군', 'add': 'Add date'}

You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다