Search

반응형

'파이썬프로그래밍'에 해당되는 글 12건

  1. 2020.10.12 [HOW]파이썬 프로그래밍 딕셔너리 자료형 사용하는 방법, Python Dictionaries 왕초보
  2. 2020.10.11 [HOW]Python 자료구조 Sets(집합) 사용하는 방법, 왕초보 파이썬 프로그래밍
반응형

안녕하세요. 신기한 연구소입니다.

프로젝트 뛸 날이 점점 다가오고 있네요. ㅎㅎ

기대됩니다.

이번 포스팅은 파이썬 프로그래밍의 자료형 중 하나인 딕셔너리(dictionaries)에 대한 이야기입니다.

딕셔너리의 특징은 우선 key-value형태의 데이터라는 점입니다.

그런 점에서 시퀀스 스타일의 구조는 아니라는 점입니다.

key를 가지고 value를 찾는 구조라 생각하면 됩니다.

딕셔너리(dictionaries)를 만들어봤습니다.

goods 이름으로 key-value 형태로 만들었네요.

cookies는 8801234라는 value를 갖게 되었습니다.

print(goods)를 실행하니 해당 key-value가 조회됩니다.

또한 딕셔너리에 키 값을 가지고 조회를 하면 값을 확인할 수 있습니다.

위 예제는 딕셔너리(dictionaries)에 key-value를 추가했습니다.

goods에 soju 키를 추가하면서 값은 8805443을 할당했습니다.

딕셔너리(dictionaries)의 키 값을 리스트(list)로 만들었습니다.

그리고 'soju'를 del 함수를 이용해서 삭제했습니다.

결과를 확인해보겠습니다.

와우~ 딕셔너리의 키가 리스트가 되었습니다.

또한 del로 soju는 사라졌습니다.

sorted를 사용하면 딕셔너리의 값을 정렬해서 출력할 수 있습니다.

abc 순으로 정렬되어서 출력되는 것을 확인했습니다.

in 연산자를 통해서 해당 값이 존재하는지 확인할 수 있습니다.

soju는 삭제되었기에 False, bread는 존재하기에 True를 출력합니다.

딕셔너리에 리스트(list)와 튜플(tuple)도 value로 가능할까요?

또한 기존 키의 값을 변경할 수 있을까요?

위 예제로 테스트해봤습니다.

bread는 soldout으로 변경되었고 listGoods와 tupleGoods가 추가되었습니다.

딕셔너리에 keys() 함수를 사용하면 dict_keys로 해당 키값들이 리스트로 출력됩니다.

그렇다면 리스트를 만들어 값으로 할당할 수도 있겠네요.

tmp_list에 keys()를 사용해서 딕셔너리 goods의 키 값을 할당했습니다.

딕셔너리의 값만 출력하고 싶다면 values()를 사용하면 dict_values의 리스트 형식으로 

값을 반환합니다.

딕셔너리 값을 key-value형태로 출력하기 위해 items() 함수를 사용하면 됩니다.

get을 이용해서 해당 딕셔너리의 값을 출력할 수 있습니다.

bread를 get 함수를 사용하니 soldout이 출력되었습니다.

값이 없다면 'None'가 출력됩니다.

딕셔너리 값을 전부 지우고 싶다면 clear() 함수를 사용하면 됩니다.

clear() 함수 사용 후 items() 함수로 확인하니 빈 값이 나왔습니다.

get 함수의 또 다른 기능은 만약 값이 없는 경우 기본 'None'가 나오는데

그 값을 지정할 수 있습니다.

'beer'값이 없는 경우 기본값인 'None'가 아닌 'nothing'이 출력됨을 확인할 수 있습니다.

이제 파이썬의 기본적인 자료형에 대해 살펴봤습니다.

잘못된 정보나 수정이 필요한 경우 댓글 주세요.

아래 하트(공감) 버튼을 눌러서 더 다양한 글을 쓸 수 있게 응원 부탁드립니다. 감사합니다.

반응형
반응형

안녕하세요. 신기한 연구소입니다.

파이썬 프로그래밍에서 사용하는 자료구조의 한 종류인 파이썬 Sets에 대해 알아볼게요.

프로그래머가 되고 싶다면 자료를 잘 다루는 게 중요합니다.

적정한 타입과 사이즈를 정해야 오류를 줄일 수 있거든요.

 

Sets 타입 (집합)

파이썬 Sets는 우선 정렬이 안되어 있으며 중복 값을 허용하지 않습니다.

우리말로 집합이라는 뜻인데..

데이터를 묶는다는 의미이며 묶은 데이터 집합끼리 데이터 처리를 할 수 있습니다.

 

파이썬 Set 자료형은 2가지 방식으로 생성합니다.

첫 번째 방법은 { }를 사용하는 방법입니다.

howToMakeSet1을 보시면 콤마로 구분된 데이터를 { }로 감싸고 있습니다.

 

생성한 set 형태로 조회는 되었습니다.

하지만 정렬이 만들 때와 다릅니다.

또한 'red'가 두 개인데 하나로 나옵니다. 

정렬되지도 않고 중복도 허용되지 않음을 확인했습니다.

 

두 번째 방법은 set()을 이용하는 방법입니다.

howToMakeSet2는 문자열로 만들었고,

howToMakeSet3는 튜플을 사용했는데 1개의 값이 있습니다.

 

결과는 역시 글자 하나를 값으로 만들면서 중복된 값은 제거하고 순서는 엉망이 되었네요. ㅎㅎ

튜플로 만들 때 ('helloworld',)로 만들어도 같은 값이 나옵니다.

 

하지만 튜플도 2개 이상의 값을 넣으면 각각 하나씩 set 집합으로 구성됩니다.

 

파이썬 set에서 list를 사용하면 값이 한 개라도 글자 단위로 분해하지 않고

그대로 set집합을 구성합니다.

 

howToMakeSet4와 howToMakeSet5의 결과를 확인해 보면 됩니다.

{'a', 'helloworld'}와 {'12345'}가 나왔습니다.

 

howToMakeSet6의 경우는 int 값을 넣었습니다.

set은 반복되는 객체가 아닌 int를 지원하지 않기에 오류가 발생합니다.

 

위 예제는 파이썬 set의 멤버십 테스트입니다.

set 집합 안에 해당 값이 있는지 테스트하는 구문입니다. 

in을 사용했습니다.

 

 

파이썬 set은 집합입니다.

그렇다면 합집합, 교집합, 마이너스 등 연산이 가능합니다.

 

교집합은 & 또는 intersection을 사용합니다. 양쪽에 다 있는 항목을 찾습니다.

합집합은 | 또는 union을 사용합니다. 두 집합을 다 합친 뒤 중복 값을 제거합니다.

차집합은 - 또는 difference를 사용합니다. 앞의 집합에서 뒤의 집합을 뺍니다.

역 교집합은 ^를 사용하며 양쪽에 다 있는 항목을 제외한 항목을 찾습니다.

 

'가나다라'로 파이썬 set 집합을 만들었습니다.

 add 함수를 사용해서 set 집합에 '바'를 추가할 수 있습니다.

결과를 보니 두 번째에 추가되었네요.

 

 remove 함수를 사용해서 '바'를 삭제할 수 있습니다.

 

update 함수로 '바사아'를 추가할 수 있습니다.

 

add와 update는 둘 다 set에 데이터를 추가할 수 있는데

add는 1개만, update는 여러 개를 동시에 추가할 수 있는 점이 다릅니다.

 

마지막으로 set을 이용해 빈 집합을 만드는 방법은

set()을 사용하면 됩니다. 

{}는 빈 집합이 아닙니다. 다음에 공부할 딕셔너리와 관계가 있답니다.

파이썬 set의 기능에 대해 알아봤습니다.

 

연말정산 신고를 하던 중 프로그램 오류가 발생했던 적이 있습니다.

업무팀에서 문의가 온 건데..

엑셀로 저장해서 합을 구하면 잘 나오는데

화면에서는 자꾸 다른 금액이 나오고 금액이 다르다고 진행이 안된다는 문의였습니다.

기존에 계속 문제없이 사용하던 프로그램이라 좀 의아했지만..

분명 잘못된 부분이 있기에 오류가 난 것입니다.

그래서 먼저 업무팀에 작년과 달라진 점을 물었습니다.

업무적으로 크게 달라진 건 없다고 하네요.

하지만 올해 금액이 다른 해에 비해 많다고 하더군요.

그 말을 듣는 순간 갑자기 생각나는 게 있었답니다.

바로 데이터 타입입니다.

금액 단위가 더 커지면서 혹시 사이즈 오보가 된 거 아닐까 확인하니

int로 되어 있더군요.

21억 4748만 3647 까지만 지원되는데 그 금액을 넘어버린 거였습니다.

지난해까지는 21억을 넘은 적이 없었던 거였고요. ㅎㅎ

그래서 사이즈를 long으로 변환해주니 오류 없이 잘 처리된 기억이 있습니다.

그래서 데이터 구조를 잘 이해하고 적절하게 사용하는 것은

개발하는데 중요한 역할을 합니다.

그래도 버그 없는 프로그램은 없어요.

유지보수팀이 필요한 이유이기도 하고요.

 

잘못된 정보나 수정이 필요하면 댓글 주세요.

아래 하트(공감) 버튼을 눌러서 더 다양한 글을 쓸 수 있게 응원 부탁드립니다. 감사합니다.

반응형