특정한 요소를 추가하는 방법이있다 I : I는 동일한 첫 번째 요소를 갖는 제 2 요소를 추가 할 필요튜플
([(5,2),(7,2)],[(5,1),(7,3),(11,1)])
.
출력 : 여기 [(5,3),(7,5),(11,1)]
특정한 요소를 추가하는 방법이있다 I : I는 동일한 첫 번째 요소를 갖는 제 2 요소를 추가 할 필요튜플
([(5,2),(7,2)],[(5,1),(7,3),(11,1)])
.
출력 : 여기 [(5,3),(7,5),(11,1)]
이 collections.Counter
에 대한 좋은 사용 사례입니다 ...
from collections import Counter
tup = ([(5,2),(7,2)], [(5,1),(7,3),(11,1)])
counts = sum((Counter(dict(sublist)) for sublist in tup), Counter())
result = list(counts.items())
print(result)
하나의 단점은 입력의 순서를 잃게 될 것입니다. 그들은이 핵심으로 분류 한 것으로 나타났습니다 , 그래서 당신은 항목을 정렬 할 수 :
result = sorted(counts.items())
Counter
는 그 목적 빈의 "카운트」를 개최하는 사전이다. 카운트는 똑같이 간단하게 추가 할 수 있도록 설계되었습니다 (카운트를 "bin-wise"로 추가 함) - 두 카운터에 bin이 없으면 누락 된 bin의 값은 0으로 간주됩니다. 그래서, 그 이유는 우리가 당신이 원하는 값을 가진 사전을 얻기 위해 카운터의 무리에 sum
을 사용할 수있는 이유입니다. 두 값 것이다 - 불행하게도이 솔루션를 들어, Counter
는
Counter([(1, 2), (3, 4)])
키 (1, 2)
와 (3, 4)
와 Counter
을 만들 것입니다 ... 일반 매핑과 같은 2 항목 시퀀스를 산출 반복 가능를 사용하여 인스턴스화 할 수 없습니다 Counter(dict([(1, 2), (3, 4)]))
키 1
와 3
와 Counter
를 생성 (및 2
및 4
값) : 그것은 당신이 그러나 매핑을 만들 경우 예상대로 작업을 수행 1.합니다.
코드를보십시오
dt = {}
tp = ([(5,2),(7,2)],[(5,1),(7,3),(11,1)])
for ls in tp:
for t in ls:
dt[t[0]] = dt[t[0]] + t[1] if t[0] in dt else t[1]
print dt.items()
여기에서 채택 된 접근법은 튜플들의 목록을 반복하는 것 (.. 수 있고, 무력)과, 사전 같이 튜플의 데이터를 저장하는, 상기 튜플의 첫 번째 요소 t[0]
은 key
이고 두 번째 요소 t[1]
은 value
입니다.
튜토리얼의 첫 번째 요소에서 동일한 키가 발견 될 때마다 튜플의 두 번째 요소와 함께 값을 추가하십시오. 결국 key
, value
쌍을 모두 필요로하는 사전 dt
을 갖게됩니다. 이 사전을 튜플 목록 dt.items()
으로 변환하면 우리는 출력을 얻습니다.
더 자세히 설명해 주시겠습니까? –
@zaolee_dragon : 답변에서 설명이 업데이트되었습니다. –
귀하가 시도한 것에 대한 최소한의 완전하고 검증 가능한 예를 보여주십시오. – user161778