慕森王
用 itertools.groupbyfrom itertools import groupbyf = lambda d: d['test']['id']res = {k:list(v) for k,v in groupby(sorted(l, key=f), f)}pprint(res)输出{'2008': [{'info': {'a': 65535, 'b': 50}, 'test': {'id': '2008', 'm': '10300'}}, {'info': {'a': 65535, 'b': 50}, 'test': {'id': '2008', 'm': '10300'}}], '2009': [{'info': {'a': 65535, 'b': 50}, 'test': {'id': '2009', 'm': '10300'}}]}
波斯汪
让我们假设array = [ { "info": { "a": 65535, "b": 50, }, "test": { "m": "10300", "id": "2008", }, }, { "info": { "a": 65535, "b": 50, }, "test": { "m": "10300", "id": "2008", }, }, { "info": { "a": 65535, "b": 50, }, "test": { "m": "10300", "id": "2009", }, },]然后您可以通过使用获得预期的结果modified_data = {}for entry in array: index = entry['test']['id'] try: modified_data[index].append(entry) except KeyError: modified_data[index] = [entry]print modified_data现在让我们分析您的代码value = [i for i in array]此后的值将等于数组本身,假设您的数组初始化与我的相同。res = sorted(value, key=lambda x: x["id"], reverse=True)如果上面的语句正确,则value将没有“ id”,因此将引发错误。此外,列表不能具有键值对。您必须为此使用字典。