๋ฐ์ดํฐ ํ์
immutable
๊ณผ mutable
์ ๋ณ์๊ฐ ๋ด๊ณ ์๋ object์ ์์ฑ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ ํน์ฑ์ด๋ค.
๋ณ์๊ฐ ๋ด๊ณ ์๋ object์ ๊ฐ์ ๋ณ๊ฒฝ ํ ์ ์๋ ๋ฐ์ดํฐ ํ์
์ immutable object
๋ผ๊ณ ๋ถ๋ฅด๋ฉฐ, ๋ณ์๊ฐ ๋ด๊ณ ์๋ object์ ๊ฐ์ ๋ณ๊ฒฝ ํ ์ ์์ผ๋ฉด mutable object
๋ผ๊ณ ๋ถ๋ฅธ๋ค.
immutable object
: int, float, bool, string, tuplemutable object
: list, dictionary
id(object)
ํจ์๋ object์ ๊ณ ์ ํ ์์๋ฅผ ๋ฆฌํดํ๋ค. ๋ฆฌํดํ๋ ๊ฐ์ด ์ค์ ๋ฉ๋ชจ๋ฆฌ์์ ์ฃผ์๋ ์๋์ง๋ง, object๋ง๋ค ์กด์ฌํ๋ ๊ณ ์ ๊ฐ์ด๋ค.
์๋ ์์ ๋ immutable object
, mutable object
๋ฅผ ๋ด๊ณ ์๋ ๋ณ์์ ์ฐ์ฐ์ ์ํํ ํ id()
ํจ์ ๊ฐ์ด ๋ฌ๋ผ์ง๋์ง ํ์ธํ๋ ์์ ์ด๋ค.
# immutble object - int, float, bool, string, tuple
>>> a = 1 # a๋ 1์ด๋ผ๋ int object๋ฅผ ๋ด๊ณ ์๋ค.
>>> id(a)
29688152
>>> a += 1 # ์ฐ์ฐ์ ์ํํ์ ๋, object 1์ด ๋ฐ๋๋๊ฒ ์๋๋ผ
>>> id(a) # ๋ค๋ฅธ int object๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ๋๋ค.
29688128
>>> str = 'a'
>>> id(str)
140300455077128
>>> str = str + 'b' # str = 'ab', ๊ธฐ์กด๊ณผ ๋ค๋ฅธ object๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ๋๋ค.
>>> id(str) # ์ฐ์ฐ์ ํ๊ธฐ ์ ๊ณผ id๊ฐ ๋ค๋ฅด๋ค.
140300454036544
>>> t = (1, 2)
>>> id(t)
140300453904680
>>> t = t + (3,) # t = (1, 2, 3)
>>> id(t) # ์ฐ์ฐ์ ์ํํ๊ธฐ ์ ๊ณผ ๋ค๋ฅธ object๋ฅผ ๊ฐ๋ฆฌํจ๋ค.
140300453980112
# tuple object์ ์์ ๊ฐ์ ๋ณ๊ฒฝํ๋ ค๊ณ ํ๋ฉด TypeError๊ฐ ๋ฐ์ํ๋ค
>>> t[0] = 5
...
TypeError: 'tuple' object does not support item assignment
# mutable object - list, dictionary
>>> l = [1, 2]
>>> id(l)
140300453998672
>>> l.append(3) # l = [1, 2, 3]
>>> id(l) # ๊ธฐ์กด์ list object์ ๊ฐ์ด ๋ณ๊ฒฝ๋์ด, id๊ฐ์ด ๊ฐ๋ค.
140300453998672
>>> d = {'key1': 'value1'}
>>> id(d)
140300454060392
>>> d['key2'] = 'value2' # d = {'key2':'value2', 'key1':'value1'}
>>> id(d) # ๊ธฐ์กด์ dictionary object์ ๊ฐ์ด ๋ณ๊ฒฝ๋์ด, id๊ฐ์ด ๊ฐ๋ค.
140300454060392
List ๊ธฐ๋ณธ ํจ์
List object๋ ์ฃผ๋ก ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ณธ ํจ์๋ฅผ ์ ๋ฆฌํด๋๋๊ฒ ์ข๋ค.
list.append(x)
- ์ธ์๋ก ๋ฐ์ x์ ํํ ๊ทธ๋๋ก ํด๋น list ๋ง์ง๋ง์ ์ถ๊ฐํ๋ค.
- ๋งค๊ฐ๋ณ์ x๋ ์ซ์, List, Tuple, Dictionary์ ํํ ์ ๋ถ ๊ฐ๋ฅํ๋ค
- ํจ์ ์คํ์ list ๊ฐ์ด ๋ฐ๋ก ๋ณํ๋๋ค.
- Return ๊ฐ ์์
list.extend(iterable)
- ๋งค๊ฐ๋ณ์ iterble์๋ฆฌ์๋ ๋ฐ๋ณต๊ฐ๋ฅํ object๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
- list, tuple, string, dictionary ๋ฑ
- dictionary๋ฅผ ์ถ๊ฐํ ๊ฒฝ์ฐ key๊ฐ๋ง ์ฐ์ฅ๋๋ค.
- ์ธ์๋ก ๋ฐ์ object์ ๊ฐ๋ค์ ํด๋น list ๋ง์ง๋ง์ ์ฐ๊ฒฐํด ์ฐ์ฅํ๋ค.
- ํจ์ ์คํ์ list์ ๊ฐ์ด ๋ฐ๋ก ๋ณํ๋๋ค.
- Return ๊ฐ ์์
>>> list = [1, 2, 3]
>>> list.extend("abcd")
>>> list
[1, 2, 3, 'a', 'b', 'c', 'd']
>>> list.extend({'key1':'value1'})
>>> list
[1, 2, 3, 'a', 'b', 'c', 'd', 'key1']
List + List
- extend()ํจ์์ ๊ฐ์ ์ญํ ์ ํ์ง๋ง, List๋ง ์ฐ์ฐํ ์ ์๋ค.
- ํจ์ ์คํ์ list์ ๊ฐ์ ๋ณํํ์ง ์๋๋ค.
- Return ๊ฐ์ผ๋ก๋ ๋ ๋ฆฌ์คํธ๋ฅผ ํฉ์น ๋ฆฌ์คํธ๋ฅผ ๋ฐํํ๋ค.
list.pop([index])
- ์ธ์๋ก ๋ฐ์ index์ ํด๋นํ๋ ์์๋ฅผ ์ญ์ ํ๋ค.
- ๋งค๊ฐ๋ณ์ index๋ ์ ์๋ก, ์๋ตํ ๊ฒฝ์ฐ ๊ฐ์ฅ ๋ง์ง๋ง ๊ฐ์ด ์ญ์ ๋๋ค.
- ์ธ์๋ก list์ index๋ณด๋ค ํฐ ๊ฐ์ ์ ๋ฌํ ๊ฒฝ์ฐ IndexError๊ฐ ๋ฐ์ํ๋ค. (์์ธ์ฒ๋ฆฌ ๊ฐ๋ฅ)
- ํจ์ ์คํ์ list์ ๊ฐ์ด ๋ฐ๋ก ๋ณํ๋๋ค.
- list์์ ์ญ์ ๋๋ ์์ดํ ๊ฐ์ด ๋ฐํ๋๋ค.
list.remove(x)
- ์ธ์๋ก ๋ฐ์ x๊ฐ๊ณผ ๊ฐ์ ์์ ์ค ์ฒซ๋ฒ์งธ ์์๋ฅผ ์ญ์ ํ๋ค.
- ํจ์ ์คํ์ list์ ๊ฐ์ด ๋ฐ๋ก ๋ณํ๋๋ค.
- Return ๊ฐ ์์
- ์ธ์๋ก list์ ์๋ ๊ฐ์ ์ ๋ฌํ ๊ฒฝ์ฐ ValueError๊ฐ ๋ฐ์ํ๋ค. (์์ธ์ฒ๋ฆฌ ๊ฐ๋ฅ)
list.insert(index, x)
- ํจ์๋ ์ธ์๋ก ๋ฐ์ index์ ์์ดํ x ๋ฅผ ์ฝ์ ํ๋ค.
- ํจ์ ์คํ์ list์ ๊ฐ์ด ๋ฐ๋ก ๋ณํ๋๋ค.
- index์ธ์์ list์ index๋ณด๋ค ํฐ ๊ฐ์ ์ ๋ฌํ ๊ฒฝ์ฐ, ๋งจ ๋ค์ ์ฝ์ ๋๋ค.
- Return ๊ฐ ์์
List ๊ธฐ๋ณธํจ์๋ฅผ ์ด์ฉํ ์์
>>> a = [1, 2, 3]
>>> a.append(5) # a ๋ค์ ์์ดํ
์ด ์ถ๊ฐ๋๋ค. a = [1, 2, 3, 5]
>>> a.append([2, 5]) # a = [1, 2, 3, 5, [2, 5]]
>>> a.pop() # ํ๋๋ ์์ดํ
์ธ [2, 5] ๊ฐ์ด ์ถ๋ ฅ๋๋ค. ์ธ๋ฑ์ค ์ง์ ํ์ง ์์ ๊ฒฝ์ฐ ์ ์ผ ๋ง์ง๋ง ๊ฐ ์ญ์
[2, 5]
>>> a.pop(2) # index=2 ์์ดํ
์ธ 3 ๊ฐ์ด ์ถ๋ ฅ๋๋ค. a = [1, 2, 5]
3
>>> a.extend([3, 4, 5]) # List [3, 4, 5] ๋ฅผ a์ ๋ค์ ์ฐ๊ฒฐํ๋ค. a = [1, 2, 5, 3, 4, 5]
>>> a.remove(4) # 4 ์ธ ์์ดํ
์ List์์ ์ญ์ ํ๋ค. a = [1, 2, 5, 3, 5]
>>> a.insert(2, 2) # List์ 2๋ฒ์งธ ์ธ๋ฑ์ค์ 2๋ฅผ ์ฝ์
ํ๋ค. a = [1, 2, 2, 5, 3, 5]
>>> a + [6, 7] # list a์ list [6, 7] ๋ฅผ ํฉ์น๋ค. a = [1, 2, 2, 5, 3, 5]
[1, 2, 2, 5, 3, 5, 6, 7]
List ๋ณต์ฌ - shallow copy, deep copy
mutable object๋ฅผ ๊ฐ๋ฆฌํค๋ ๋ณ์๋ฅผ ๋ค๋ฅธ ๋ณ์์ ๋์ ํ๋ฉด ๊ธฐ์กด object๋ฅผ ๊ณต์ ํ๋ค. ๊ฐ์ object๋ฅผ ๊ฐ๋ฆฌํค๊ธฐ ๋๋ฌธ์ ์๋ ์์ ์์ list2์ ์์๊ฐ์ ๋ณ๊ฒฝํ๊ฒ ๋๋ฉด, list1์ ์์๊ฐ๋ ๋ณ๊ฒฝ๋๋ค.
ํด๋น ๊ฒฝ์ฐ๋ shallow copy(์์ ๋ณต์ฌ)์ ์ํ๋ค.
>>> a, b = [1, 2], [3, 4]
>>> list1 = [a, b]
>>> list2 = list1 # list1, list2๊ฐ ๊ฐ์ object๋ฅผ ๊ฐ๋ฆฌํจ๋ค.
>>> print list1, list2, list1 is list2
[[1, 2], [3, 4]] [[1, 2], [3, 4]] True
# list2๋ list1์ ๊ฐ์ object๋ฅผ ๊ฐ๋ฆฌํค๋ฏ๋ก list1๋ ๋ณํ๋ค.
# 10์ด๋ผ๋ int object๋ก ์ฌํ ๋น๋๊ธฐ ๋๋ฌธ์ a์ ๊ฐ์ ๋ณํ์ง ์๋๋ค.
>>> list2[0] = 10
>>> print list1, list2, list1 is list2
[10, [3, 4]] [10, [3, 4]] True
>>> print a, b
[1, 2] [3, 4]
# list1[1][0], list2[1][0] ์ ๊ฐ์ b[0]๊ณผ ๊ฐ์ ๊ฐ์ด๋ฏ๋ก b์ list object๊ฐ ๋ณ๊ฒฝ๋๋ค.
>>> list2[1][0] = 33
>>> print list1, list2, list1 is list2
[10, [33, 4]] [10, [33, 4]] True
>>> print a, b
[1, 2] [33, 4]
์ฌ๋ผ์ด์ฑ์ผ๋ก list object๋ฅผ ๋ณต์ฌ ํ๋ ๊ฒฝ์ฐ๋ shallow copy์ ํด๋นํ๋ค. ์๋ ์์ ์์ list1, list2๋ ๋ค๋ฅธ list object์ด์ง๋ง, ๋ฆฌ์คํธ์ ์์๋ค์ a, b ์ list object๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์๋ค.
list1, list2๋ ๋ค๋ฅธ list object์ด๋ฏ๋ก list1[n] list2[n]์ ๊ฐ์ ์ฌํ ๋น ํ ๊ฒฝ์ฐ, ์๋ก์ list์ ์ํฅ์ ์ฃผ์ง ์๋๋ค.
list1, list2์ ์์๊ฐ์ธ list1[0], list2[0]๋ a์ list object๋ฅผ ๊ณต์ ํ๊ณ ์๊ธฐ ๋๋ฌธ์ list2[n][m] ๊ฐ ๋ณ๊ฒฝ์, list1[n][m] ๊ฐ ๋ํ ๋ณํ๊ฒ ๋๋ค.
- copy module์
copy()
ํจ์๋ ์ฌ๋ผ์ด์ฑ๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๋์ํ๋ค.
>>> a, b = [1, 2], [3, 4]
>>> list1 = [a, b]
>>> list2 = list1[:]
>>> list1, list2, list1 is list2 # list1, list2๋ ๋ค๋ฅธ object
[[1, 2], [3, 4]] [[1, 2], [3, 4]] False
# list2์ list1์ ๋ค๋ฅธ object์ด๋ฏ๋ก list1์ ์ํฅ๋ฐ์ง ์๋๋ค.
# list2[0]์ 10์ด๋ผ๋ int object๋ก ์ฌํ ๋นํ๊ธฐ ๋๋ฌธ์ a์ ๊ฐ์ ๋ณํ์ง ์๋๋ค.
>>> list2[0] = 10
>>> print list1, list2, list1 is list2
[[1, 2], [3, 4]] [10, [3, 4]] False
>>> print a, b
[1, 2] [3, 4]
# List2[1]๊ณผ List1[1]์ b๋ผ๋ list object๋ฅผ ๊ฐ๋ฆฌํค๋ฏ๋ก
# List2[1][0]์ ๋ณ๊ฒฝํ๋ฉด List1[1][0]๋ ๋ณ๊ฒฝ๋๊ณ , b์ list object ๊ฐ๋ ๋ณ๊ฒฝ๋๋ค.
>>> list2[1][0] = 33
>>> print list1, list2, list1 is list2
[[1, 2], [33, 4]] [10, [33, 4]] False
>>> print a, b
[1, 2] [33, 4]
list ๋ณต์ฌ ์ copy ๋ชจ๋์ deepcopy()
ํจ์๋ฅผ ์ด์ฉํด ๋ณต์ฌ๋ฅผ ํ๋ฉด ์๋ก์ด list object๊ฐ ์์ฑ๋ ๋ฟ ์๋๋ผ, ๋ด๋ถ์ ์์๋ค๋ ์๋ก์ด object๋ก ์์ฑ๋์ด ๋ list object๋ฅผ ๋จ๋
์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
>>> a, b = [1, 2], [3, 4]
>>> list1 = [a, b]
>>> list2 = list1[:]
>>> list1, list2, list1 is list2 # list1, list2๋ ๋ค๋ฅธ object
[[1, 2], [3, 4]] [[1, 2], [3, 4]] False
# list2๋ฅผ ๋ณ๊ฒฝํด๋ list1์ ๋ณํ๊ฐ ์๋ค.
>>> list2[0] = 10
>>> list1, list2, list1 is list2
[[1, 2], [3, 4]] [10, [3, 4]] False
>>> print a, b
[1, 2] [3, 4]
# list2๋ฅผ ๋ณ๊ฒฝํด๋ list1์ ๋ณํ๊ฐ ์๋ค.
# ๊ธฐ์กด๊ณผ ๋ฌ๋ฆฌ ๋ด๋ถ์ object๋ ์๋ก ์์ฑ๋๋ฏ๋ก a, b์ ๋ณํ๊ฐ ์๋ค.
>>> list2[1][0] = 33
>>> list1, list2, list1 is list2
[[1, 2], [3, 4]] [10, [33, 4]] False
>>> print a, b
[1, 2] [3, 4]
Deep copy๊ฐ ์ง์๋์ง ์๋ ๊ฒฝ์ฐ ๋ณดํต recursive(์ฌ๊ท) ํจ์๋ฅผ ์ด์ฉํ๋ค. ์๋์ ์ฝ๋๋ 2์ฐจ์ list์ ๋ํด์ ์์๋ฅผ ์๊ฐํด๋ณธ ์ฝ๋์ด๋ค.
list a[i]๋ฅผ list b[i]์ append ํ ๊ฒฝ์ฐ, shallow copy๊ฐ ๋๋ฏ๋ก list a[i]์ ์์ ๊ฐ์ temp์ ์ ์ฅํ ํ, list b[i]์ append ํด์ค๋ค. a๊ฐ 3์ฐจ์ ๋ฆฌ์คํธ์ผ ๊ฒฝ์ฐ, temp๋ฅผ ํ๋ ๋ ๋ง๋ค์ด์ค์ผํ๋ค.
a = [[1, 2], [3, 4]]
b = []
>>> for i in range(len(a)):
... temp = []
... for j in range(len(a[i])):
... temp.append(a[i][j])
... b.append(temp)
...
>>> print a, b, a is b, a[0] is b[0], a[0][0] is b[0][0]
[[1, 2], [3, 4]] [[1, 2], [3, 4]] False False True
>>> b[0][0] = 5
>>> print a, b, a is b, a[0] is b[0], a[0][0] is b[0][0]
[[1, 2], [3, 4]] [[5, 2], [3, 4]] False False False
Dictionary object
dictionary ์๋ฃํ์ {key:value}
ํํ๋ฅผ ๊ฐ๋๋ค. ์์๊ฐ ์๋ ์๋ฃํ์ด๊ธฐ ๋๋ฌธ์ ์ธ๋ฑ์ค๊ฐ ์๋ key ๊ฐ์ผ๋ก ์ ๊ทผํด value๊ฐ์ ์ป๋๋ค.
key
๋ก ์ฌ์ฉํ ์ ์๋ ๊ฐ์ hashmap์ ์ ์ฅํ ์ ์๋ hashable type ์ด์ด์ผ ํ๋ค.
- hashable object์ธ ์ซ์, ๋ฌธ์์ด, tuple์ key๋ก ์ฌ์ฉํ ์ ์๋ค.
- tuple์ ๊ฒฝ์ฐ, list, dictionary๋ฅผ ์์๋ก ๊ฐ๊ณ ์๋ tuple์ key๋ก ์ฌ์ฉํ ์ ์๋ค.
- hashable ํ์ง ์์ object์ธ list, dictionary๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ TypeError๊ฐ ๋ฐ์ํ๋ค.
hashable object
๋ object์ ์๋ช ์ฃผ๊ธฐ ๋์ ๋ณํ์ง ์๋ hash ๊ฐ์ ๊ฐ์ง๋ค. hash() ํจ์๋ฅผ ์ด์ฉํด hash ๊ฐ์ ํ์ธํ ์ ์๋ค. hashable object๋ง ๊ฐ๋ฅํ๋ฉฐ, hashableํ์ง ์์ object์ hash ๊ฐ์ ์ป์ผ๋ ค๊ณ ํ ๊ฒฝ์ฐ TypeError๊ฐ ๋ฐ์ํ๋ค. ๋ object์ hash ๊ฐ์ ๊ฐ์์ง ๋น๊ตํ๊ธฐ ์ํด์๋obj.__eq__(obj2)
ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค. [dict type ๋ฌธ์ ๋งํฌ] [hashable ๋ฌธ์ ๋งํฌ]
value
์๋ ๋ชจ๋ object๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
- value๋ ์ค๋ณต๋ ์ ์์ง๋ง, key๊ฐ ์ค๋ณต๋๋ฉด ๋ง์ง๋ง์ ๋ฑ๋กํ ๊ฐ์ผ๋ก ๋ฎ์ด์์์ง๋ค.
- value์ ๊ฐ์ ๋ณ๊ฒฝํ๊ธฐ ์ํด์๋
d[key] = new_value
ํ์์ผ๋ก ๋ณ๊ฒฝํด์ฃผ๋ฉด ๋๋ค.
# unhashable type์ key๋ก ์ฌ์ฉํ์ ๊ฒฝ์ฐ
>>> dict_test = {[1, 2, 3]: 1}
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
>>> a, b, c = 1, 2, 3
>>> dict_test = {"a": a, "b": b} # ๋์
๋๋ฆฌ ์์ฑ
>>> dict_test["c"] = c # ์๋ก์ด ํค์ ๊ฐ์ ์ถ๊ฐ
>>> dict_test
{'a': 1, 'c': 3, 'b': 2}
>>> dict_test = dict(a = a, b = b, c = c) # dict ํจ์๋ฅผ ์ด์ฉํด ์์ฑ
>>> dict_test
{'a': 1, 'c': 3, 'b': 2}
>>> dict_test.keys() # dict ์ key๊ฐ๋ค์ ์๋ก์ด list๋ก ๋ฐํ
['a', 'c', 'b']
>>> dict_test.values() # dict ์ value๊ฐ๋ค์ ์๋ก์ด list๋ก ๋ฐํ
[1, 3, 2]
JSON
JSON(JavaScript Object Notation)์ ํ ์คํธ ๊ธฐ๋ฐ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๊ธฐ ์ํด ๋ง๋ค์ด์ง ํ์์ด๋ค. ์น ๋ธ๋ผ์ฐ์ -์น ์๋ฒ ์ฌ์ด์ ๋ฐ์ดํฐ๋ฅผ ๊ตํํ๋๋ฐ ๋ง์ด ์ฌ์ฉํ๋ ํ์์ด๋ค. ํ ์คํธ ๊ธฐ๋ฐ์ด๊ธฐ๋๋ฌธ์ ์ฌ๋์ด ๋ณผ ๋์ ์ฝ๊ฒ ํ์ธํ ์ ์๋ค. ์ฃผ๋ก Key-value ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค. ์ด๋ฅผ JSON์์๋ object๋ผ๊ณ ๋ถ๋ฅธ๋ค.
JSON ํ๊ธฐ๋ฒ
- JSON object๋ {์ค๊ดํธ}๋ก ํ๊ธฐํ๋ค.
- JSON array๋ [๋๊ดํธ]๋ก ํ๊ธฐํ๋ค.
- Key(์์ฑ): Value(๊ฐ) ํํ๋ก ํ๊ธฐํ๋ค.
- Key(์์ฑ)์ "์๋ฐ์ดํ"๋ก ๋ฌถ์ด์ ๋ฌธ์์ด๋ก ํ๊ธฐํ๋ค. ์ซ์๋ ๋ฌธ์์ด๋ก ํํ๋๋ค.
- Value(๊ฐ)์ ๋ชจ๋ ์๋ฃํ์ด ๊ฐ๋ฅํ๋ฉฐ ์๋ฃํ์ ๋ฐ๋ผ ํ๊ธฐ ๋ฐฉ๋ฒ์ด ๋ฌ๋ผ์ง๋ค.
- ์์ฑ์ด ์ฌ๋ฌ๊ฐ์ธ ๊ฒฝ์ฐ
,
๋ก ๊ตฌ๋ถํ๋ค. - JSON์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๋์ฝ๋ ์ธ์ฝ๋ฉ์ ์ฌ์ฉํ๋ค.
[
{
"name": "song",
"age": 23,
"isAgree": true,
"hobby": null
},
{
"name": "danna",
"age": 23,
"isAgree": false,
"hobby": "yoga"
}
]
python ์์ JSON ๋ชจ๋์ Python์ object๋ฅผ ๋ฌธ์์ด ํํ์ผ๋ก ๋ฐ๊ฟ์ฃผ๊ณ , ๋ฌธ์์ด ํํ์ Python์ object๋ก ๋ฐ๊ฟ์ค๋ค. ์ฃผ๋ก key-value ๋ฐฉ์์ JSON๋ฌธ์์ด๊ณผ dictionary ํ์ ๊ฐ์ ๋ณ๊ฒฝ์ ์ํด ์ฌ์ฉํ๋ค.
Python object์ JSON ์๋ฃํ ๊ฐ์ ๋ณํ
- dict - object {key:value}
- list, tuple - [array]
- str - string
- int, long, float - number
- True, False - true, false
- None - null
JSON ๋ฌธ์์ด๋ก ์ ์ฅ์ [์ธ์ฝ๋ฉ]json.dump(obj, fp)
: ์ฒซ๋ฒ์งธ ์ธ์ obj๋ฅผ JSON ํฌ๋งท์ ๋ฌธ์์ด๋ก ๋ฐ๊ฟ ์คํํ file์ ์ฐ๊ธฐjson.dumps(obj)
: file๋ก ์ฐ์ง ์๊ณ , ํ์ด์ฌ ๋ด์์ ์ฌ์ฉํ๊ธฐ ์ํด json ํฌ๋งท์ ๋ฌธ์์ด๋ก ๋ฐ๊พผ string์ ๋ฐํํ๋ค.
JSON ํฌ๋งท์ ๋ก๋์ [๋์ฝ๋ฉ]json.load(fp)
: json file์ ๋ก๋ํด python object๋ก ๋ณํํด ๊ทธ ๋ณํํ ๊ฐ์ ๋ฐํํ๋ค.json.loads(string)
: ๋ฌธ์์ด์ Python object๋ก ๋ณํํด ๊ทธ ๋ณํํ ๊ฐ์ ๋ฐํํ๋ค.
# python ์์
>>> import json
>>> person = {
... 'id':1,
... 'name':'danna',
... 'school':[
... {'year':2013, 'school':'sunrin'},
... {'year':2016, 'shcool':'konkuk'},
... ]
... }
>>> jsonString = json.dumps(person, indent=4)
>>> print type(jsonString)
<type 'str'>
>>> print jsonString
{
"school": [
{
"school": "sunrin",
"year": 2013
},
{
"shcool": "konkuk",
"year": 2016
}
],
"id": 1,
"name": "danna"
}
2019.07.15 ๊ณต๋ถ ์๋ฃ ์ ๋ก๋
'๐ Algorithm > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python] class, instance ์์ฑ, class ์์๊ณผ ์์ฑ์ (0) | 2020.12.07 |
---|---|
[Python] Lambda ํ์ฉ - map, filter, reduce ํจ์ (0) | 2020.12.07 |
[Python] ํท๊ฐ๋ฆฌ๋ ๋ฌธ๋ฒ ์ ๋ฆฌ (0) | 2020.12.07 |