Python 如何将同一个dictionary元素连接在一起?

Python 如何将同一个dictionary元素连接在一起?,python,dictionary,Python,Dictionary,我有一个字典列表,如下所示: [{'queryID': '1', 'documentID': '184'}, {'queryID': '1', 'documentID': '29'}, {'queryID': '1', 'documentID': '31'}, {'queryID': '1', 'documentID': '12'}, {'queryID': '2', 'documentID': '12'}, {'queryID': '2', 'documentID': '15'},

我有一个字典列表,如下所示:

 [{'queryID': '1', 'documentID': '184'}, 
{'queryID': '1', 'documentID': '29'}, 
{'queryID': '1', 'documentID': '31'},
 {'queryID': '1', 'documentID': '12'},
{'queryID': '2', 'documentID': '12'}, 
{'queryID': '2', 'documentID': '15'}, 
{'queryID': '2', 'documentID': '184'}, 
{'queryID': '2', 'documentID': '858'}, 
{'queryID': '2', 'documentID': '51'},
 {'queryID': '2', 'documentID': '102'}]
如何将dictionarylist更改为以下格式:

[{'queryID': '1','documentID':'184','29','31','12'},
{'queryID': '2','documentID':'12','15','184','858','51','102}] 

看起来您想按
queryID
键对字典列表进行分组,并为每个组获取
documentID
s列表。
在这种情况下,预期的输出,应包含一系列
documentID
s
使用以下方法与
itertools.groupby
operator.itemgetter
函数配合使用:

import itertools, operator

l = [{'queryID': '1', 'documentID': '184'},
{'queryID': '1', 'documentID': '29'},
{'queryID': '1', 'documentID': '31'},
 {'queryID': '1', 'documentID': '12'},
{'queryID': '2', 'documentID': '12'},
{'queryID': '2', 'documentID': '15'},
{'queryID': '2', 'documentID': '184'},
{'queryID': '2', 'documentID': '858'},
{'queryID': '2', 'documentID': '51'},
 {'queryID': '2', 'documentID': '102'}]

l.sort(key=operator.itemgetter('queryID'))

result = [{'queryID': k, 'documentID': [d['documentID'] for d in v ]}
          for k,v in itertools.groupby(l, key=operator.itemgetter('queryID'))]

print(result)
输出:

[{'documentID': ['184', '29', '31', '12'], 'queryID': '1'}, {'documentID': ['12', '15', '184', '858', '51', '102'], 'queryID': '2'}]

预期的输出不是有效的字典