根据 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}],
]
我想根据特定键的值动态地将一个字典列表拆分为多个字典列表。
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}],
]