我需要帮助优化我的代码。
我有一个数据:
data = [
{"ids": [1]},
{"ids": [3, 4]},
{"ids": [1, 2]},
{"ids": [2]},
]
我需要按照ID进行分组,且每组数据之间不重叠,期望的数据应如下所示:
expected = [
[{"ids": [1]}, {"ids": [2]}],
[{"ids": [3, 4]}, {"ids": [1, 2]}],
] # only 2 sublist here
我用来分割的代码(未优化):
import itertools as it
def _split(
list_of_dicts,
):
splitted_list_of_dicts = []
sub_list = []
while list_of_dicts:
for dct in list_of_dicts:
ids_in_sub_list = set(
it.chain(*[sub_list_el["ids"] for sub_list_el in sub_list]),
)
if not set(dct["ids"]).intersection(ids_in_sub_list):
sub_list.append(dct)
list_of_dicts.remove(dct)
splitted_list_of_dicts.append(sub_list)
sub_list = []
return splitted_list_of_dicts
我的代码的结果是:
result = [
[{'ids': [1]}, {'ids': [2]}],
[{'ids': [3, 4]}],
[{'ids': [1, 2]}]
] # 3 sublist
我得到了另一个列表,我试图对它进行优化。 如果你有任何想法能帮助我,我将非常感激。谢谢你的时间。
更多例子:
data = [
{"ids": [1]},
{"ids": [3, 4]},
{"ids": [1, 2]},
{"ids": [4]},
{"ids": [3]},
{"ids": [2]},
]
可以将其分为两个元素列表:
expected = [
[{'ids': [1]}, {'ids': [4]}, {'ids': [2]}, {'ids': [3]}],
[{'ids': [3, 4]}, {'ids': [1, 2]}],
]
但现在我已经拥有全部4个了:
result = [
[{'ids': [1]}, {'ids': [4]}, {'ids': [2]}],
[{'ids': [3, 4]}],
[{'ids': [1, 2]}],
[{'ids': [3]}]
]
[(1), (2), (3), (4)]; [(1, 2), (3, 4)]
? - Pranav Hosangadi[[{'ids': [1]}, {'ids': [4]}, {'ids': [2]}, {'ids': [3]}], [{'ids': [3, 4]}, {'ids': [1, 2]}]]
- KeyJ