Есть ли умный способ получить наш неограниченный уровень вложенности l oop?
На каждом l oop он должен проверить, нет ли item
в списке done_items
или group
еще нет в списке done_groups
. Если нет, то запускается еще один l oop. И так далее, и так далее ... В большинстве случаев достаточно двух уровней, но иногда требуется до 100.
def get_cluster(dict_1, dict_2):
done_groups, done_items = [], []
item_cluster = {}
cluster = 1
for item_main in dict_1.keys():
if item_main not in done_items: # check if item hasn't been already done
for group_1 in dict_1[item_main]: # Loop 1 through groups
if group_1 not in done_groups: # check if group hasn't been already done
done_groups.append(group_1)
for item_1 in dict_2[group_1]: # Loop 1 through items
if item_1 not in done_items: # check if item hasn't been already done
done_items.append(item_1)
item_cluster[item_1] = cluster
for group_2 in dict_1[item_1]: # Loop 2 through groups
if group_2 not in done_groups: # check if group hasn't been already done
done_groups.append(group_2)
for item_2 in dict_2[group_2]: # Loop 2 through items
if item_2 not in done_items: # check if item hasn't been already done
done_items.append(item_2)
item_cluster[item_2] = cluster
for group_3 in dict_1[item_2]: # Loop 3 through groups
if group_3 not in done_groups: # check if group hasn't been already done
done_groups.append(group_3)
for item_3 in dict_2[group_3]: # Loop 3 through items
if item_3 not in done_items: # check if item hasn't been already done
done_items.append(item_3)
item_cluster[item_3] = cluster
cluster += 1
return item_cluster
Есть ли способ применить while
l oop здесь?