【问题标题】:Concatenate multi value into one record将多个值连接到一条记录中
【发布时间】:2010-03-17 06:32:29
【问题描述】:

我将两个表连接在一起,我喜欢将多个值连接到一个记录中而没有重复值。

  1. 输入表

    表名:TAXLOT_ZONE
    潮区
    1个
    1个
    1 B
    1个C
    2D
    二维
    2 E
    3A
    3 乙
    4 C
    5 天

  2. 理想的输出表看起来像;

    表名:Taxlot_zone_out
    潮区
    1 A、B、C
    2D、E
    3 A, B
    4 C
    5 天

【问题讨论】:

  • 纯 Python 中没有“表”之类的东西。你在使用数据库吗?如果是这样,什么样的接口? SQL?如果是这样,请参阅stackoverflow.com/questions/2451026/…
  • 我使用由 GIS 公司 ESRI 创建的文件地理数据库或 dbf 格式。我只想从这个连接的表中创建一个新表。

标签: python


【解决方案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'])]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-06
    • 2012-04-24
    • 2016-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-01
    • 2021-04-14
    相关资源
    最近更新 更多