에서 내용을 가져와서 정리했습니다.
문제시 바로 삭제하겠습니다 댓글달아주세요!.
파이썬의 기본 문법에 대해서는 진짜 거의 모르는게 없다고 생각했는데... 저 블로그를 보면서
아직 부족함을 느꼈습니다.
1. 키와 값 바꾸기.
간단하게 아래와 같은 딕셔너리 컴프리핸션 으로 되네요... 리스트로 만들어서 dict()함수로 덮어씌우고 그랬었는데..
# -*- encoding: cp949 -*- a = {'a': 1, 'c': 3, 'b': 2} print {v: k for k, v in a.iteritems()}
2. 넣은 순서대로 들어가는 OrderedDict.
아래 코드의 위와 아래를 비교해 보면 알겠지만 아래의 OrderedDict는 넣은 순서대로 값이 출력됩니다.
그런데 처음에 딱 보고 든 생각은 키나 값을 중점으로 정렬되서 값이 나오는건가?? 했는데
애초에 그렇게 집어넣으려면 딕셔너리가 정렬되어 있어야 하고 삽입시 이분탐색 등으로 찾아서 넣는 등..
되게 복잡해질걸 예상못했네요..(그리고 딕셔너리가 해쉬라서 이게 안된다는걸 또 깨달음.)
그냥 순서대로 넣으면 그 순서대로 나오는겁니다.
# -*- encoding: cp949 -*- d={} d['a'] = 1 d['d'] = 4 d['c'] = 3 d['b'] = 2 print d from collections import OrderedDict d = OrderedDict() d['a'] = 1 d['d'] = 4 d['c'] = 3 d['b'] = 2 print d.items()
3. 기본 값을 지정해줄수 있는 defaultdict.
사실 이것때문에 글을 쓴건데... 되게 유용해보입니다. 딕셔너리를 만드는데 모든 키에 대해서 값을
디폴트로 안에 인자로 넣은 것으로 초기화해줍니다. 그래서 아래처럼 키 'd'에 값을 할당 안해줬는데도
그냥 출력해보면 출력한 결과가 나옵니다.
# -*- encoding: cp949 -*- from collections import defaultdict d = defaultdict(lambda: []) d['a'].append(1) print d['a'] print d['d'] print;print #사전으로 구현한다면 d={} d['a'] = [1] print d['a'] if 'd' not in d: d['d'] = [] print d['d']
그냥 사전으로 프로그래밍하는것보다 훨씬 깔끔한 프로그래밍이 가능할듯.
아래는 상상도 못한 코드 ㅋㅋㅋ 재귀 사전이라고 불러야 맞을 것 같습니다. 위 사이트에서 가져왔습니다.
# -*- encoding: cp949 -*- from collections import defaultdict infinite_dict = lambda: defaultdict(infinite_dict) inf = infinite_dict() inf['a'] = 1 inf['b']['c'] = 2 inf['c']['d']['e'] = 3 print inf
아래는 파이썬답게 코드 짜는 법을 다룬 포스팅. c나 c++만 하게 되면 어느 문제를 해결하는 법에 대해서
코딩적으로 머리가 굳곤 하는데 파이썬을 이용하면 신세계를 맛볼 수 있다.
'Python > 2.7 information' 카테고리의 다른 글
unittest. 테스트 (0) | 2017.02.25 |
---|---|
python smtp(메일보내기) (0) | 2016.12.14 |
다차원 리스트를 만들고 복사하는 것에 대해서. (0) | 2016.11.08 |
next_permutations, prev_permutation, k permutations (0) | 2016.10.03 |
파이썬의 변수에 관하여. (0) | 2016.09.17 |