python组按字段记录在一起

时间:2017-08-03 14:03:34

标签: python

我有一组记录,我想在两个不同的字段上组合在一起。每条记录都是一本python字典。其中一个字段是日期值,另一个是数字字段。即,:

h = [{'date': 20170728, 'group': 121, ...},
     {'date': 20170729, 'group': 131, ...},
     ...]

现在,如果我想将某些群体组合在一起,比如说[123,134,145]中的任何群体,但具有相同的日期,请将它们组合在一起,但是其他每个群体都会自行组合在一起,我将如何完成这个?

我使用以下代码:

grouped_list = []
for date, items in groupby(h, key=itemgetter('date'):
    g = list(items)
    grouped_list.append(g)

我正在寻找的输出如下:

grouped_list = [
                [records that have a distinct date value and group],
                [records that have a distinct date but are in the group [123, 134, 145],
               etc.]

组123,134和145中的记录在groups_list中不应有各自的列表。它们应该组合在一个列表中。

1 个答案:

答案 0 :(得分:0)

您可以编写自定义函数来计算用于对记录进行分组的键,如下所示:

)

此处from itertools import groupby records = [ {'date': 20170728, 'group': 121}, {'date': 20170729, 'group': 131}, {'date': 20170729, 'group': 134}, {'date': 20170729, 'group': 145}, ] grouped_groups = [123, 134, 145] def compute_groupby_key(entry): return "%d-%d" % ( entry['date'], grouped_groups[0] if entry['group'] in grouped_groups else entry['group'] ) grouped_records = [list(entries) for key, entries in groupby(records, compute_groupby_key)] 包含:

grouped_records