본문 바로가기

[Language] - Python21

# 14. dictionary setdefault, defaultdict 그동안 여러모로 일이 많아서 포스트가 미뤄졌습니다.. (--) (__) 그동안 새로 알게된 사실들을 차근차근 정리하고자 한다.. 우선 딕셔너리에 기본값을 설정하는 깔끔한 방법부터 정리하겠다! 이번 포스트에서 다룰 내용은 크게 두 가지이다. 첫 번째는 setdefault() 메소드를 활용하여 단일 키값에 대한 기본값 설정, 두 번째는 defaultdict 컬렉션을 활용하여 대입되는 키값에 대한 기본값 설정이다. 바로 코드로 확인해보겠다. # setdefault 를 알기 전, 각 키별로 기본값을 설정하는 방법 def set_default_value(): d = dict() keys = [1, 2, 3, 4, 5] for k in keys: d[k] = list() print(d) 만약 각 키값에 리스트를 기.. 2021. 5. 28.
# 13. [Tip] win32com 모듈을 사용한 엑셀 제어 # Excel.Application COM 인스턴스 생성 excel = win32.Dispatch("Excel.Application") excel.Visible = True cell = None # 파일 열기 workbook = excel.Workbooks.Open(self.path) # 시트 순회 for worksheet in workbook.Worksheets: print('This sheet name is .. ', worksheet.Name) # 시트 이름 출력 cell = worksheet.UsedRange.Find(self.tag) # 워크시트의 Range 인스턴스에서 찾기 if not cell: continue worksheet.Range(str(cell.address).replace("$".. 2021. 4. 20.
# 12. 제너레이터 (Generator) 이번 포스트에서는 제너레이터에 대해 알아보고자 한다. 필자는 제너레이터에 대해 잘 몰랐을 때 단순히 특정 loop에서 yield 키워드를 사용하면 제너레이터 인스턴스가 반환된다는 사실만 알았다. def gen(): li = [1, 2, 3, 4, 5] for i in li: yield i g = gen() print(g) >> 다음과 같이 제너레이터 메소드에서 반환되는 값은 제너레이터 인스턴스이다. 이 제너레이터 인스턴스를 루프에 적용하면 다음과 같이 사용할 수 있다. for i in gen(): print(i) >> 1 2 3 4 5 이렇게만 보면 일반적인 iterator와 다를게 없어보인다. 지금부터 제너레이터에 대해 좀더 알아보자. def gen2(): li = [1, 2, 3, 4, 5] yiel.. 2021. 4. 14.
# 11. [Tip] dictionary merge 이번 포스트에서는 딕셔너리를 병합하는 방법에 대해 다뤄보고자 한다. 리스트 자료형같은 경우에는 extned() 메소드를 사용하여 확장할 수 있다. 마찬가지로 딕셔너리도 방법이 존재한다. 우선 이 포스트를 보기 이전에 가변 인자에 대한 개념이 부족하다면 dev-ryuon.tistory.com/4?category=908968 를 먼저 참고하는 것을 추천한다. 먼저 mutable한 방법부터 살펴본다. d1.update(d2) print(d1) >> {'a': 1, 'b': 5, 'c': 3, 'd': 4} 딕셔너리 클래스의 update() 메소드를 사용하면 d1 딕셔너리 인스턴스에 d2 딕셔너리 인스턴스의 내용이 덮어쓰인 것을 확인할 수 있다. 다음으로는 immutable한 방법을 살펴보겠다. d1 = {'a.. 2021. 4. 14.
# 10. [Tip] lambda, map, zip 응용 필자는 오늘 동료의 코드를 보는 도중 중복이 매우 심한 코드를 보고말았다. 상황은 다음과 같다. PyQT 에서 QTableWidget에 출력해야할 데이터가 많은 상황이었다. 컬럼이 특히 많았는데 이 컬럼들을 일일이 QTableWidgetItem 인스턴스를 초기화하여 set 하는 상황이었다.. 대략 난감 -_-;; 그래서 UserRole Data는 전부 같고 Display Role 데이터만 다른 상황이었기에 필자는 이렇게 해결했다. display_tuple = ( dxf_feature.layer.name(), dxf_feature.legend_name, dxf_feature.layer_name, dxf_feature.layer_code, dxf_feature.label, dxf_feature.label_m.. 2021. 4. 1.
#9. lambda, map, reduce, filter lambda PYTHON의 lambda expression은 무명메소드로써 함수를 한줄에 정의할 수 있는 장점이 있다. lambda x, y: x + y >> (lambda x, y: x + y)(10, 20) >> 30 이 lambda expression을 응횽하는 방법 3가지를 알아볼 것이다. map map() 내장함수는 주로 iterator의 타입을 바꾸는데 많은 예를 든다. list(map(int, (0.1, 9.2, 4.3, 1.3))) >> [0, 9, 4, 1] 그러나 실제로 이 코드의 의미는 map(function, iterator)로써 iterator 인스턴스의 각 요소을 function의 인자로 대입하는 것이다. 즉, int() 라는 function의 argument로 0.1, 9.2,.. 2021. 3. 25.