Posts

Showing posts with the label dict

파이썬에서 리스트/딕셔너리 복사

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/cfchw 파이썬의 리스트(list)와 딕셔너리(dict)는 등호(=)를 이용해서 다른 변수에 할당할 경우 해당 자료가 복사되지 않고 동일한 데이터에 연결됩니다. 아래의 리스트 예시를 보겠습니다. x = [1, 2, 3] y = x 위와 같이 한 상태에서 y의 마지막 원소를 꺼내기 위해 pop()을 사용해 봅니다. y.pop() 이렇게 하면 x와 y가 동일한 데이터에 연결되어 있기 때문에 x를 출력해도 마지막 원소가 제거된 것을 볼 수 있습니다. print(x) [1, 2] 데이터를 복사하여 별도의 리스트를 만들고 싶다면 아래와 같이 copy() 함수를 이용해야 합니다. y = x.copy() 이렇게 하면 y에서 pop()을 사용해도 x에 저장된 데이터에는 변화가 없습니다. 딕셔너리도 마찬가지입니다. 데이터 자체를 복사해서 하나 더 만들고 싶다면 copy()를 사용합니다. a = {'name':'john', 'age':20} b = a.copy() @joviansummer의 스팀 프로젝트 스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다. ( https://steemitwallet.com/~witnesses ) jswit 증인 노드 프로젝트를 시작합니다. jsup 업보팅(upvoting) 서비스 소개 jsup 수혜자 지정 기능 추가 jSTEEM 프로젝트 - 텔레그램 챗봇으로 구현하는 스팀 블럭체인 탐색기 STEEM.NFT - 디지털 아트 보존 프로젝트

파이썬에서 json 형식 문자열(str) - 딕셔너리(dict) 변환

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/json-str-dict json 형식과 파이썬의 딕셔너리(dict)는 형식이 동일합니다. 파이썬에서 json 모듈을 이용하면 json 형식의 문자열을 딕셔너리로 변환할 수 있습니다. json.loads()를 사용합니다. import json # json 형식의 문자열 fruits_json = '{ "apple":10, "orange":3, "banana":7 }' # 딕셔너리로 변환 fruits_dict = json.loads(fruits_json) 위의 예시에서 fruits_json은 문자열(str)이고 fruits_dict는 딕셔너리(dict)입니다. print(fruits_dict['orange']) 3 반대로 딕셔너리를 json 형식 문자열로 바꾸려면 json.dumps()를 사용합니다. # 딕셔너리 scores_dict = { 'bob':83, 'john':92, 'jane':93 } # json 형식 문자열로 변환 scores_json = json.dumps(scores_dict) 위의 예시에서 scores_dict는 딕셔너리이고 scores_json은 문자열입니다.

파이썬 딕셔너리(dict)에서 원소 추가/제거

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/dict 파이썬에서 key:value 형태로 구성된 딕셔너리(dict)에서 특정 키(key)에 대응하는 원소를 추가/제거하는 방법입니다. 원소 추가는 간단합니다. 변수를 딕셔너리 형식으로 초기화한 후에 원소를 할당해 주면 됩니다. # x_dict 변수 초기화(딕셔너리 형식) x_dict = {} # 원소 추가 - 키 'abc', 값 100 x_dict['abc'] = 100 # 2개 더 추가 x_dict['def'] = 50 x_dict['xyz'] = 99 당연히 아래와 같이 변수 x_dict의 내용을 한번에 할당해도 됩니다. x_dict = { 'abc':100, 'def':50, 'xyz':99 } 이제 제거해 보겠습니다. x_dict에서 키 'def'에 대응하는 원소를 제거하려면 pop()을 사용합니다. 아래와 같습니다. x_dict.pop('def') 이제 x_dict의 내용을 확인해 보면 해당 원소가 사라진 것으로 볼 수 있습니다. print(x_dict) {'abc': 100, 'xyz': 99} 제거하면서 해당 원소를 다른 변수에 할당할 수 있습니다. 이번에는 키 'xyz'에 대응하는 원소를 제거하면서 이 값을 변수 y에 할당해 봅니다. y = x_dict.pop('xyz') 키 'xyz'에 대응하는 값은 99였으므로, 변수 y에 99가 할당되고 x_dict에서는 이 원소가 제거되었습니다. print(y) 99 print(x_dict) {'abc': 100}

파이썬의 딕셔너리(dict)에서 특정 키(key)가 존재하는지 확인하기

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/dict-key key:value 형태로 구성되는 딕셔너리(dict) 형식의 변수에서 특정한 키(key)가 포함되어 있는지 확인하는 방법입니다. 일단 아래와 같이 x_dict라는 변수를 생각해 봅니다. x_dict = { 'abc':100, 'def':50, 'xyz':99 } x_dict에 "def"라는 키가 있는지 확인하려면 간단하게 if 조건문으로 가능합니다. if 'def' in x_dict: print('x_dict에 키 def가 존재합니다.') else: print('x_dict에 키 def가 존재하지 않습니다.') 딕셔너리의 value 항목을 리스트(list) 또는 딕셔너리로 구성하려면 실제 값을 할당하기 전에 초기화를 해 주어야 하는데, 이와 관련하여 간단한 예시를 메모해 둡니다. target_list = { 'abc':[1,2,3] } target_key = 'def' if target_key in target_list: # value에 10을 추가, 리스트 형태이므로 append() 사용 target_list[target_key].append(10) else: print("target_list에 ", target_key, "키가 없습니다." # value를 리스트 형식으로 선언한 후에 value에 10을 추가 target_list[target_key] = [] target_list[target_key].append(10) print(target_list) {'abc': [1, 2, 3], 'def': [10]}

파이썬에서 딕셔너리(dict) 정렬(sort)

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/dict-sort 우선 파이썬에서 리스트(list)를 정렬하는 방법은 아래의 링크에 있습니다. 파이썬에서 리스트(list) 정렬(sort) https://steemit.com/hive-141029/@joviansummer/list-sort {key1:value1, key2:value2,... } 형태의 딕셔너리 형식일 경우, 아래와 같이 sorted() 함수를 이용해서 정렬할 수 있습니다. my_dict = { "xyz":10, "def": -1, "abc":5 } # my_dict의 키(key)를 기준으로 정렬하여 my_dict_sorted에 할당 my_dict_sorted = sorted(my_dict.items()) my_dict.items()로 딕셔너리에 저장된 목록을 추출한 후에 sorted()로 정렬이 이루어집니다. 결과는 리스트 형식이며 각 항목은 key와 value의 튜플(tuple)이 됩니다. print(my_dict_sorted) [('abc', 5), ('def', -1), ('xyz', 10)] 키가 아니라 값(value)을 기준으로 정렬하려면 아래와 같이 합니다. my_dict_sorted_by_value = sorted(my_dict.items(), key=(lambda x: x[1])) my_dict.items()에서 두번째 항목(x[1])을 정렬 기준(key)으로 지정하였습니다. print(my_dict_sorted_by_value) [('def', -1), ('abc', 5), ('xyz', 10)]