Вы можете установить условные выражения в зависимости от того, какой максимальный размер вашей семьи вы хотите, и в зависимости от того, сколько мужчин и женщин вы хотите в максимальном списке.Ниже у меня есть пример для мужчин.Списки имеют метод .pop () и другой метод .append (), который мы можем использовать в этом примере..pop () может удалить указанный элемент из списка на основе его местоположения индекса..append () может добавить элемент в конец пустого списка.Если максимальный размер домашнего хозяйства превышен, мы можем вытолкнуть указанное количество значений из первого списка.Мы также можем использовать функцию диапазона, чтобы выбрать диапазон людей, которых мы хотим вызвать pop () из списка, чтобы разделить список пополам, предполагая, что число людей в списке является четным числом.Если это нечетное число, мы можем добавить 1.
hh = {'num_members': 10,
'list_male': [30, 29, 17, 10, 15, 22, 19],
'list_female': [40, 70, 22],
}
if hh['num_members'] >= 10:
hh['list_male2'] = []
hh['list_female2'] = []
number = len(hh['list_male'])
number_female = len(hh['list_female'])
if number % 2 == 0:
divide_num = number / 2
divide_num = int(divide_num)
for person in range(0, divide_num + 1):
person = hh['list_male'].pop()
hh['list_male2'].append(person)
if number_female % 2 == 0:
divide_num_female = number_female / 2
divide_num_female = int(divide_num_female)
for person in range(0, divide_num_female + 1):
person = hh['list_female'].pop()
hh['list_female2'].append(person)
if number % 2 != 0:
number = number + 1
divide_num = number / 2
divide_num = int(divide_num)
for i in range(divide_num):
person = hh['list_male'].pop()
hh['list_male2'].append(person)
if number_female % 2 != 0:
number_female = number_female + 1
divide_num_female = number_female / 2
divide_num_female = int(divide_num_female)
for i in range(divide_num_female):
person = hh['list_female'].pop()
hh['list_female2'].append(person)
print(hh)
Приведенный выше код даст вам следующий результат и разделит список пополам (исходя из того факта, что у нас неравное количество людей вВ обоих списках мы разделяем списки на основе этого неравного числа):
{'num_members': 10, 'list_male': [30, 29, 17], 'list_female': [40], 'list_male2': [19, 22, 15, 10], 'list_female2': [22, 70]}
Как вы можете видеть, мы добавили дополнительные списки в словарь, чтобы разделить членов на две отдельные семьи, исходя из условия, что числоучастники превышают максимальный лимит.