xy 론 python 사전 의 pythonic

1844 단어
가장 자주 사용 하 는 데이터 구조 로 서 저 는 항상 자신 이 lowbi 라 고 생각 합 니 다. 역 사 는 다음 과 같 습 니 다.
V1
list 계수 기능 을 실현 합 니 다. 저 는 예전 에 자주 이렇게 썼 습 니 다.
foo_dict = {}
for i in a_list:
      if i in foo_dict:
            foo_dict[i] += 1
      else:
            foo_dict[i] =1

V2
이제 보 니 로 우 가 조금 만 더 개선 을 강요 했다 면 실제로 이렇게 써 야 한다: foodict = {} for i in a_list: foo_dict.set_default(i,0) foo_dict [i] + = 1 이러한 코드 의 복잡 도 는 하나 내 려 갔다.
ps
set_default 는 get 의 반작용 이 라 고 볼 수 있 습 니 다. 또한 확장: Liux 셸 에서 get 방법: new = $(test: - another), test 가 값 이 있 을 때 전 자 를 취하 고 그렇지 않 으 면 후 자 를 취하 십시오.
v3
하지만 지금 보 니 더 좋 은 방법 이 있 습 니 다. collection 의 default 를 직접 호출 하 는 것 이 분명 합 니 다.dict func = lambda x: 0 d = default_dict(func) for i in a_list: d [i] + = 1 이렇게 하 는 장점 은: "This technique is simpler and faster than an equivalent technique using dict. setdefault ():" --- from python 문서
v4
그럼 이렇게 하 는 게 가장 간결 한 거 아니 야? 아니, C = Counter (a list) 가 한 걸음 에 도착 하면 털 이 되 고 계속 바퀴 를 만들어 야 돼!
Ps: 네가 곰 곰 이 생각해 도 bug 를 찾 지 못 할 때, 네가 기능 을 이 루 었 다 고 생각 할 때, 반드시 마음 을 가 라 앉 히 고 세 번 묵묵히 읽 으 면 내 가 바보 야. 나 를 바보 로 만 드 는 거 야. 그리고 너 는 네가 정말 바보 라 고 생각 할 거 야.= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
v1
하나의 사전 을 실현 합 니 다. 이 사전 은 다른 두 사전 의 집합 입 니 다. 예전 의 저 는 copy 를 먼저 한 다음 에 update 를 했 을 것 입 니 다. 그러나 직관 적 이지 않 고 가 독성 이 떨 어 질 것 같 습 니 다.
V2
. items () 를 더 한 다음 dict (a. iterials () + b. iterials ())
v3
위의 방법 은 py3 에서 오 류 를 보고 할 수 있 기 때문에 왜 Z = {별표 x, 별표 y} 를 시도 하지 않 습 니까? 한 걸음 에 도착 합 니 다. 그리고 pythonic 은 물론 사전 으로 무 너 뜨 릴 수도 있 지만 저 는 사전 으로 무 너 뜨리 는 것 을 추천 하지 않 습 니 다. 효율 이 너무 느 려 서 timeit 를 믿 지 않 습 니 다.

좋은 웹페이지 즐겨찾기