У меня есть следующий дикт:
groups = {"group 1": [1, 2, 3, 4],
"group 2": [5, 6, 7, 8],
"group 3": [9, 10, 11, 12],
"group 4": [13, 14]}
Когда длина группы меньше минимального размера (group_size=4
), я хочу перераспределить участников в другие группы.В этом случае результат будет примерно таким:
groups = {"group 1": [1, 2, 3, 4, 13],
"group 2": [5, 6, 7, 8, 14],
"group 3": [9, 10, 11, 12]}
У меня есть следующий код, который работает, но менее эффективен, чем хотелось бы:
# Identify small groups
small_groups = []
for group_name, group_members in groups.items():
if len(group_members) < group_size:
small_groups.append(group_name)
# Redistribute members of small groups to the larger groups
to_redistribute = []
for group_name in small_groups:
to_redistribute.extend(groups.pop(group_name))
for group_name, group_members in groups.items():
if not to_redistribute:
break
group_members.append(to_redistribute.pop())
Важное примечание:Настоящие члены групп - это строки, а не целые числа.
Есть ли лучший способ перераспределения списков значений словаря?