根据 python 中的值将字典列表拆分为多个字典列表

Split list of dictionaries into multiple list of dictionaries by its value in python

我想根据特定键的值动态地将一个字典列表拆分为多个字典列表。

Actual_list = [{status:Pass,name:abc,loop_count:1},{status:Fail,name:abc,loop_count:1},{status:Fail,name:abc,loop_count:2},{status:Fail,name:abc,loop_count:2},]

这里的字典列表保存值,必须根据loop_count的键值拆分。字典的每个拆分列表应包含 loop_count

的唯一值
Expected_list =[ [{status:Pass,name:abc,loop_count:1}, {status:Fail,name:abc,loop_count:2}],[{status:Fail,name:abc,loop_count:1},{status:Fail,name:abc,loop_count:2}]]

IIUC:

from itertools import groupby


Actual_list = [
    {"status": "Pass", "name": "abc", "loop_count": 1},
    {"status": "Pass", "name": "abc", "loop_count": 1},
    {"status": "Fail", "name": "abc", "loop_count": 1},
    {"status": "Fail", "name": "abc", "loop_count": 2},
    {"status": "Fail", "name": "abc", "loop_count": 2},
]

nums, vals = [], {}
for k, g in groupby(
    sorted(Actual_list, key=lambda k: k["loop_count"]),
    lambda k: k["loop_count"],
):
    vals[k] = list(g)
    nums.append(k)

out = []
while any(vals.values()):
    out.append([vals[n].pop(0) for n in nums if vals[n]])

print(out)

打印:

[
    [
        {"status": "Pass", "name": "abc", "loop_count": 1},
        {"status": "Fail", "name": "abc", "loop_count": 2},
    ],
    [
        {"status": "Pass", "name": "abc", "loop_count": 1},
        {"status": "Fail", "name": "abc", "loop_count": 2},
    ],
    [{"status": "Fail", "name": "abc", "loop_count": 1}],
]