我有一组记录,我想在两个不同的字段上组合在一起。每条记录都是一本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中不应有各自的列表。它们应该组合在一个列表中。
答案 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