2010-03-16 6 views
0

두 테이블을 함께 연결했는데 중복 값없이 하나의 레코드에서 다중 레코드를 연결하는 것이 좋습니다.다중 값을 하나의 레코드로 연결

  1. 입력 테이블

    표 이름 : TAXLOT_ZONE
    TID ZONE
    1 A
    1 A
    1 B
    1 C
    2 D
    2 D
    2 E
    3 A
    3 B
    4 C

  2. 바람직한 출력 테이블은 다음과 같습니다.

    테이블 이름 : Taxlot_zone_out
    TID ZONE
    1 A, B, C 표 가정
    2 D, E
    (3) A, B
    4 C
    5 D

+1

순수 파이썬에서 "테이블"로 그런 일이 없습니다. 데이터베이스를 사용하고 있습니까? 그렇다면 어떤 인터페이스입니까? SQL? 그렇다면 http://stackoverflow.com/questions/2451026/minimizing-sql-queries-using-join-with-one-to-many-relationship/2451065#2451065 –

+0

파일 지오 데이터베이스 또는 생성 된 dbf 형식을 사용합니다. GIS 회사 ESRI. 이 조인 된 테이블에서 새 테이블을 만들고 싶습니다. – user295216

답변

1

정렬 된 순서로 반복 가능하면 itertools.groupby을 사용하여 동일한 첫 번째 요소로 행을 그룹화 할 수 있습니다.

l = [(1, 'A'), (1, 'A'), (1, 'B'), (1, 'C'), 
    (2, 'D'), (2, 'D'), (2, 'E'), 
    (3, 'A'), (3, 'B'), 
    (4, 'C'), 
    (5, 'D')] 

from itertools import groupby 
from operator import itemgetter 
result = [(taxlot, list(set(v for k,v in g))) 
      for taxlot, g in groupby(l, itemgetter(0))] 

결과 :

[(1, ['A', 'C', 'B']), 
(2, ['E', 'D']), 
(3, ['A', 'B']), 
(4, ['C']), 
(5, ['D'])] 
관련 문제