将多值连接到一个记录中

时间:2010-03-16 22:20:09

标签: python

我一起加入了两个表,我喜欢做的是在一个记录中连接多个vaule而没有重复的值。

  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
    5 D

  2. 理想的输出表如下;

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

1 个答案:

答案 0 :(得分: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'])]