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'}]
预期的输出不是有效的字典