2010-03-16 69 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'])]