2010-03-16 66 views
0

我將兩個表連接在一起,我喜歡將多個值連接在一個記錄中,而沒有重複的值。將多個值連接成一個記錄

  1. 輸入表

    表名:TAXLOT_ZONE
    TID ZONE
    1的
    1的
    1乙
    圖1C
    2 d
    2 d
    2] E
    3 A
    3 B
    4 C
    5 D

  2. 期望的輸出表看起來像;

    表名:Taxlot_zone_out
    TID ZONE
    1 A,B,C
    2 d,E
    3 A,B
    4℃
    5 d

+1

有沒有這樣的事情在純Python 「表」。你在使用數據庫嗎?如果是這樣,什麼樣的界面? SQL?如果是這樣,請參閱http://stackoverflow.com/questions/2451026/minimizing-sql-queries-using-join-with-one-to-many-relationship/2451065#2451065 – 2010-03-16 22:27:15

+0

我使用創建的文件地理數據庫或dbf格式由ESRI,GIS公司。我只是想從這個連接表中創建一個新表。 – user295216 2010-03-16 22:37:37

回答

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'])]