擅长:python、mysql、java
<p>使用<code>reduce</code>可以将合并和合并逻辑清楚地分开:</p>
<pre><code>#!/usr/bin/env python
from pprint import pprint
from collections import defaultdict
def group(grouped, ungrouped):
group = grouped[ungrouped['language']]
group['language'] = ungrouped['language']
group['suggestion'].append(ungrouped['suggestion'])
group['comment'].append(ungrouped['comment'])
return grouped
ungrouped = [{'language': 'de', 'suggestion': 'fressen', 'comment': 'for animals'},
{'language': 'de', 'suggestion': 'essen', 'comment': ''},
{'language': 'fr', 'suggestion': 'manger', 'comment': ''},
{'language': 'fr', 'suggestion': 'bouffer', 'comment': 'slang'}]
grouped = reduce(group, ungrouped, defaultdict(lambda: defaultdict(list))).values()
# Convert defaultdict to dict for pretty printing.
pprint([dict(group) for group in grouped])
</code></pre>