我有一个python词典列表,看起来像这样:
[{key1: value1, key2: array1}, {key1: value2, key2: array2}, {key1: value3, key3: array3},...]
在我的例子中,其中一些词典对key1具有相同的值,例如,value1 = value3 . 我怎样才能最终获得一系列看起来像这样的词典?
[{key1: value1, key2: array1+array3}, {key1: value2, key2: array2},...]
其中“array1 array3”是一个单独的数组,其中包含原始array1和array3数组的附加元素?
编辑:这不是按键合并;数组中的每个字典都具有完全相同的结构:{key1:“some_string”,key2:[数组]} - 我的问题是我希望将它们“合并”在“some_string”上,所以[数组], key2的值将与列表中其他字典的数组连接,这些数组与key1的值具有相同的“some_string” .
2 回答
做你想做的最好的方法是重新构建你的数据,至少是暂时的 . 如果您要使用从
value
映射到array
(没有固定键)的字典,您可以将所有数据放在一个位置,并有效地检测何时出现重复值,以便您可以将值合并在一起 . 如果需要,您可以将单个词典转换回较小的词典列表 .尝试这样的事情:
最后列表的顺序是任意的 . 如果要保留原始列表中的dicts顺序,可以使用
OrderedDict
表示merged
.由于您要按
key1
进行分组,因此可以使用itertools.groupby()
.输出: