擅长:python、mysql、java
<p>试试<code>itertools.groupby</code>:</p>
<pre><code>from itertools import groupby
Input = [{"rbd": "x", "cat": "xxx", "origin": "us"},
{"rbd": "y", "cat": "xxx", "origin": "us"},
{"rbd": "z", "cat": "xxx", "origin": "us"},
{"rbd": "q", "cat": "xxx", "origin": "us"},
{"rbd": "1", "cat": "xxy", "origin": "us"},
{"rbd": "2", "cat": "xxy", "origin": "us"}]
print([{"rbd": [i["rbd"] for i in item], "cat": k[0], "origin": k[1]} for k, item in groupby(Input, key=lambda x: (x["cat"], x["origin"]))])
</code></pre>
<p>这给了我:</p>
<pre><code>[{'rbd': ['x', 'y', 'z', 'q'], 'cat': 'xxx', 'origin': 'us'}, {'rbd': ['1', '2'], 'cat': 'xxy', 'origin': 'us'}]
</code></pre>