#20-파이썬 기초 실습 - 딕셔너리 Dictonary-1
2020. 1. 31. 07:55ㆍAI & BigData/Python Basics
파이썬 기초 실습 - 딕셔너리 Dictionary - 1¶
데이타 타입¶
* 딕셔너리(Dictionary)
In [1]:
dict_d = {'key1':'item1','key2':'item2'}
In [2]:
dict_d
Out[2]:
{'key1': 'item1', 'key2': 'item2'}
In [3]:
dict_d['key2']
Out[3]:
'item2'
In [4]:
type(dict_d)
Out[4]:
dict
In [5]:
id(dict_d)
Out[5]:
2308704175432
1. 딕셔너리 객체 호출¶
- 딕셔너리는 시퀀스 자료형이다.
In [6]:
dict_d = {'F': 3, 'A': 1, 'B': 2, 'C': 3, 'D': 4, 'E': 8}
for key in dict_d:
print(key, dict_d)
F {'F': 3, 'A': 1, 'B': 2, 'C': 3, 'D': 4, 'E': 8}
A {'F': 3, 'A': 1, 'B': 2, 'C': 3, 'D': 4, 'E': 8}
B {'F': 3, 'A': 1, 'B': 2, 'C': 3, 'D': 4, 'E': 8}
C {'F': 3, 'A': 1, 'B': 2, 'C': 3, 'D': 4, 'E': 8}
D {'F': 3, 'A': 1, 'B': 2, 'C': 3, 'D': 4, 'E': 8}
E {'F': 3, 'A': 1, 'B': 2, 'C': 3, 'D': 4, 'E': 8}
2. 딕셔너리의 키에 대한 반복 추출¶
In [7]:
dict_d = {'F': 3, 'A': 1, 'B': 2, 'C': 3, 'D': 4, 'E': 8}
for key in dict_d:
print(key, dict_d[key])
F 3
A 1
B 2
C 3
D 4
E 8
In [8]:
# 딕셔너리의 모든 키값의 순차적 추출
# F A B C D E 순서가 아닌 A B C D E F 순으로
# collections의 OrderedDict을 이용해서 키 순서대로 정렬하였다. 여기서 키의 크기순으로 정렬되는 것이다.
from collections import OrderedDict
dict_d = {'F': 3, 'A': 1, 'B': 2, 'C': 3, 'D': 4, 'E': 8}
ordered_dict = OrderedDict(sorted(dict_d.items()))
for key in ordered_dict.items():
print(key)
('A', 1)
('B', 2)
('C', 3)
('D', 4)
('E', 8)
('F', 3)
In [9]:
# 딕셔너리의 키와 값을 동시에 참조하여 추출
dict_d = {'F': 3, 'A': 1, 'B': 2, 'C': 3, 'D': 4, 'E': 8}
for key in dict_d.items():
print(key, dict_d)
('F', 3) {'F': 3, 'A': 1, 'B': 2, 'C': 3, 'D': 4, 'E': 8}
('A', 1) {'F': 3, 'A': 1, 'B': 2, 'C': 3, 'D': 4, 'E': 8}
('B', 2) {'F': 3, 'A': 1, 'B': 2, 'C': 3, 'D': 4, 'E': 8}
('C', 3) {'F': 3, 'A': 1, 'B': 2, 'C': 3, 'D': 4, 'E': 8}
('D', 4) {'F': 3, 'A': 1, 'B': 2, 'C': 3, 'D': 4, 'E': 8}
('E', 8) {'F': 3, 'A': 1, 'B': 2, 'C': 3, 'D': 4, 'E': 8}
사전형(dictionary type) 자료구조¶
딕셔너리의 형식 ( 딕셔너리의 표현 )¶
In [10]:
dict_d = {'id': 'microfun', 'name': 'song'}
dict_d['name'] # 키로 값을 불러온다.
Out[10]:
'song'
In [11]:
type(dict_d)
Out[11]:
dict
In [12]:
dict_d = {1: 12, 2: 13, 3: 11,4: 10,5: 0,6: 9,7: 8}
In [13]:
dict_d[2]
Out[13]:
13
In [14]:
dict_d[1]
Out[14]:
12
In [15]:
dict_d[7]
Out[15]:
8
In [16]:
dict_d = {id : 485} # 내장 함수를 키로 넣으면 오류는 안 난다.
dict_d
Out[16]:
{<function id(obj, /)>: 485}
In [17]:
dict_d # {<function id(obj, /)>: 485} id는 내장함수라서 이런 결과가 나왔다.
# 키에 람다식을 넣을수도 있다.
Out[17]:
{<function id(obj, /)>: 485}
In [18]:
# 숫자를 키로 만들수 있다.
# 데이터에 리스트 값도 넣을수 있다. (다른 데이터구조도 가능)
dict_d = {1 : [1,2,3]}
In [19]:
dict_d
Out[19]:
{1: [1, 2, 3]}
1. dict(). 내장 함수의 이용.¶
In [20]:
# dict() 내장함수는 String으로 지정하지 않더라도 자동으로 키에 String으로 들어간다. {'value': 1}
dict(value = 1)
Out[20]:
{'value': 1}
In [21]:
# 키에 String으로 넣으니 에러 발생. SyntaxError: keyword can't be an expression
dict('value'=1)
File "<ipython-input-21-f603ef2710b7>", line 2
dict('value'=1)
^
SyntaxError: keyword can't be an expression
In [22]:
# 키에 int를 넣으니 에러 발생. SyntaxError: keyword can't be an expression
dict(1=value)
File "<ipython-input-22-4652b2127dc7>", line 2
dict(1=value)
^
SyntaxError: keyword can't be an expression
In [23]:
dict_d = dict(one=1, two=2) # 두 개의 데이터를 한 번에 넣을 수 있다.
print(dict_d)
type(dict_d)
{'one': 1, 'two': 2}
Out[23]:
dict
In [24]:
dict_d = dict([(1,'one' ),('two',2)]) # 리스트에 튜플 형식으로 쌍을 묶으면 사전타입으로 바꿀 수 있다.
print(dict_d)
type(dict_d)
{1: 'one', 'two': 2}
Out[24]:
dict
In [25]:
dict_d = dict({1:'one', 'two':2}) # 원래 사전 타입을 넣어도 된다.
print(dict_d)
type(dict_d)
{1: 'one', 'two': 2}
Out[25]:
dict
2. zip(). 내장 함수의 이용.¶
In [26]:
dict_d = ['one', 'two', 'three']
dict_e = (1, 2, 3)
dict(zip(dict_d, dict_e)) # 패킹과 같은 효과이다.
Out[26]:
{'one': 1, 'two': 2, 'three': 3}
In [27]:
dict(zip(dict_e, dict_d)) # 반대의 경우에는 숫자를 키로 넣을 수 있다.
Out[27]:
{1: 'one', 2: 'two', 3: 'three'}
In [28]:
x = dict(zip(dict_d, dict_e))
y = dict(zip(dict_e, dict_d))
dict_d[0] = 'jeon' # 값을 바꿨다.
In [29]:
dict_d #. 출력값 확인.
Out[29]:
['jeon', 'two', 'three']
In [30]:
dict_e # 변화가 없다. 주소가 아닌 값만 복사된 것을 알 수 있다.
Out[30]:
(1, 2, 3)
In [31]:
x # 변화가 없다. 주소가 아닌 값만 복사된 것을 알 수 있다.
Out[31]:
{'one': 1, 'two': 2, 'three': 3}
In [32]:
y
Out[32]:
{1: 'one', 2: 'two', 3: 'three'}
3. 딕셔너리의 연산¶
In [33]:
dict_d = {'2': '2번', '3': '3번'}
dict_d['1'] = '1번' # a에 키는 '1', 값은 '3번'이라는 요소를 추가했다.
dict_d
Out[33]:
{'2': '2번', '3': '3번', '1': '1번'}
In [34]:
dict_d['1'] = '1번' # 키가 1인 데이터의 값을 '1번'으로 바꿨다.
dict_d
Out[34]:
{'2': '2번', '3': '3번', '1': '1번'}
In [35]:
len(dict_d) # 데이터 갯수를 세어주는 length()함수.
Out[35]:
3
4. 딕셔너리의 키 멤버십 테스트¶
In [36]:
dict_d = {'one': 1, 'two': 2, 'three': 3, 'four': 4}
'one' in dict_d
Out[36]:
True
In [37]:
'one' in dict_d
Out[37]:
True
In [38]:
1 in dict_d.values()
Out[38]:
True
In [39]:
100 in dict_d.values()
Out[39]:
False
4. 딕셔너리의 포맷팅¶
In [40]:
dict_d = '%(name)s, %(age)s' # 포맷팅 뿐만 아니라 어느 데이터가 들어가야 하는지도 알려준다.
print(dict_d)
dict_e = '%(name)s, %(money)s' # 비교를 위해 뒤에 요소를 바꿨다.
print(dict_e)
%(name)s, %(age)s
%(name)s, %(money)s
In [41]:
dict_d % {'name':'seong', 'age':'38'}
Out[41]:
'seong, 38'
In [42]:
dict_e % {'name':'seong', 'money':'1억'}
Out[42]:
'seong, 1억'
In [ ]:
'AI & BigData > Python Basics' 카테고리의 다른 글
#22-파이썬 기초 실습 - 부울(Boolean) (0) | 2020.02.02 |
---|---|
#21-파이썬 기초 실습 - 딕셔너리 Dictonary - 2 (0) | 2020.02.01 |
#19 - 파이썬 기초 실습 -Random Choice (0) | 2020.01.30 |
#18-파이썬 기초 실습 - 리스트(List) - 7 (0) | 2020.01.29 |
#17-파이썬 기초 실습 - 리스트(List)-6 (0) | 2020.01.28 |