250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- LifeCycle
- tabbar
- Coroutines
- Compose
- 계측
- TEST
- CustomScrollView
- Button
- textview
- Navigation
- 앱
- 안드로이드
- intent
- appbar
- Dialog
- Kotlin
- DART
- binding
- ScrollView
- Flutter
- 앱바
- android
- activity
- scroll
- livedata
- textfield
- viewmodel
- data
- drift
- 테스트
Archives
- Today
- Total
Study Record
[파이썬] 딕셔너리(JSON) 본문
728x90
딕셔너리 특징
- 딕셔너리 객체는 넣은 순서대로 저장되지 않는다. 따라서, 검색할 때 속도가 좋다.
- 딕셔너리 자료형은 해싱 기법을 이용하기 때문에 자료가 순서대로 저장되지 않는다.(딕셔너리는 해시 테이블 형식의 일종이다.)
- 키(key) & 값(value) 쌍의 형태로 구성된다.
- 키(key)는 문자열, 숫자가 주로 사용되고, 값(value)은 모든 유형과 임의의 파이썬 객체일수 있다.
- 키(key)는 중복될 수 없지만 값(value)은 중복될 수 있다.
- key 값은 변하지 않는 값을 사용하고, value 값은 변하는값과 변하지 않는 값 모두 사용 가능하다.
- 딕셔너리는 index 기능이 없는 대신 key 값으로 검색할 수 있다.
- 조인(join) 할 수 없다. 따라서, '+' 기호 사용하는 방법을 택해야 한다.
☞ 딕셔너리 사용 형식
dic = {} # 비어 있는 딕셔너리(dict) 선언
dic = { 'key1': 'value1', 'key2': 'value2' }
dic = { 'key1': ['value1', 'value2']} # 딕션너리에 리스트 요소를 넣을 수 있다.
dic = { 'key1': {'key2': 'value2'}} # 딕셔너리에 딕셔너리 요소를 넣을 수 있다.
dic = { 'key1': ('value1', 'value2') } # 딕셔너리에 튜플 요소를 넣을 수 있다.
☞ 딕셔너리 기본 사용법 - keys(), values(), get(key)
a = {"Hello": "welcome", "Python": "Good"}
print(a.keys()) # dict_keys(['Hello', 'Python']) : 키를 출력한다.
print(a.values()) # dict_values(['welcome', 'Good']) : value을 출력한다.
print(a.get("Hello")) # "welcome" : 키값이 "Hello" 인 value 값을 얻는다.
print(a["Hello"]) # "welcome" : 키값이 "Hello" 인 value 값을 얻는다.
print(a.get("sss", "none")) # "none" : "sss" 라는 키가 존재하지 않으므로 default 값인 none 출력
# 사용 예시
for i in a.items():
# ('Hello', 'welcome')
print(i)
for key, value in a.items():
# key = 'Hello' , value = 'welcome'
print(key, value)
for i in a.keys():
# i = 'Hello' or 'Python' - 키값이 들어감
print(a.get(i))
# python 2.x
print(a.keys()) # ['Hello', 'Python'] : 리스트로 출력된다.
☞ 딕셔너리, list, tuple 변환 - list(), tuple(), zip()
a = {"Hello": "welcome", "Python": "Good"}
print(list(a.keys())) # ['Hello', 'Python']
print(tuple(a.values())) # ('welcome', 'Good')
# 딕션어리로 전환
alpha = ['a', 'b', 'c']
number = [1, 2, 3]
dict(zip(alpha, number)) # {'a': 1, 'b': 2, 'c': 3}
☞ 딕셔너리 요소 추가
a = {1: 'a'}
a[2] = 'b' # {1: 'a', 2: 'b'}
a['name'] = 'pey' # {1: 'a', 2: 'b', 'name': 'pey'}
a[3] = [1, 2, 3] # {1: 'a', 2: 'b', 'name': 'pey', 3: [1, 2, 3]}
☞ 딕셔너리 요소 삭제
a = {1: 'name', 2: 'id' , 3: 'pass', 'a': 'Wow!'}
del a[1] # {2: 'id', 3: 'pass', 'a': 'Wow!'}
del a[2] # {3: 'pass', 'a': 'Wow!'}
a.clear() # {} : 전체 삭제
del a # a 자체가 사라진다. 정의되지 않음
☞ in
a = {1: 'name', 2: 'id' , 3: 'pass', 'a': 'Wow!'}
'name' in a # 키값을 본다. a 에 'name' 이라는 키가 있으면 true
☞ 한꺼번에 업데이트하기
a = {'kim':'010-1111-1111', 'Lee':'010-2222-2222', 'Park':'010-3333-3333'}
a.update({'Baik':'010-8815-6754', 'Park':'010-4444-4444'})
"""
a = {'kim': '010-1111-1111', 'Lee': '010-2222-2222', 'Park': '010-4444-4444', 'Baik': '010-8815-6754'}
"""
※ 추가 응용
a = {'one':1, 'two':2, 'three':3, 'four':4, 'five':5}
# (질문) value가 '4'인 키를 찾고 싶다. => 'four'
# 풀이1
result = [key for key, value in a.items() if value == 4]
print(result)
# 풀이2
result = dict({(k,v) for (k,v) in a.items() if v == 4})
print(result)
# 풀이3
result = []
for k, v in a.items():
if v == 4:
result.append(k)
print(result)
※ 딕셔너리 키와 값 서로 바꾸기
a = {'one':1, 'two':2, 'three':3, 'four':4, 'five':5}
reverse_a = dict({(v,k) for (k,v) in a.items()})
# a = {'one': 1, 'two': 2, 'three': 3, 'four': 4, 'five': 5}
# reverse_a = {3: 'three', 2: 'two', 4: 'four', 1: 'one', 5: 'five'}
※ [참고] comprehension
(초급) https://mingrammer.com/introduce-comprehension-of-python/
(중급) https://mingrammer.com/translation-iterators-vs-generators/
728x90
'서버보안 > 리눅스 서버보안' 카테고리의 다른 글
[파이썬] 기본 문법(조건문, 반복문, 함수) (0) | 2021.11.24 |
---|---|
[파이썬] 집합(Set) (0) | 2021.11.24 |
[파이썬] 튜플(tuple) (0) | 2021.11.24 |
[파이썬] 리스트 (0) | 2021.11.24 |
[파이썬] 문자열 인덱싱/슬라이싱, 포맷팅, 관련 함수 (0) | 2021.11.23 |