Я предполагаю, что словарь ввода выглядит следующим образом -
{
28705: (["Jonh Daves", "George Denis", "Alan Denis"], ['1988-03-13', '1989-03-04']),
28995: (["Ophelia James", "David Daves", "Alex Jonson"], ['1998-03-15'])
}
Исходя из этого предположения, я не понимаю, почему вы используете namelist = str(names)
в вашем l oop. Я удалил эту строку из l oop, поскольку она не помогает ответить на ваш вопрос. Вот обновленная функция -
def printSubjects(bin_to_id):
for reference, namesDates in bin_to_id.items():
# namelist = str(names)
names, dates = namesDates # Unpack the names list and the dates list
for name in names: # Iterate through names
for date in dates: # Iterate through dates
print(reference, "|", name, "|", date)
Выход
28705 | Jonh Daves | 1988-03-13
28705 | Jonh Daves | 1989-03-04
28705 | George Denis | 1988-03-13
28705 | George Denis | 1989-03-04
28705 | Alan Denis | 1988-03-13
28705 | Alan Denis | 1989-03-04
28995 | Ophelia James | 1998-03-15
28995 | David Daves | 1998-03-15
28995 | Alex Jonson | 1998-03-15
Например, для ключа 28795
переменная namesDates
равна (["Jonh Daves", "George Denis", "Alan Denis"], ['1988-03-13', '1989-03-04'])
.
Используя names, dates = namesDates
, мы распаковываем namesDates, так что names
равен ["Jonh Daves", "George Denis", "Alan Denis"]
, а dates
равен ['1988-03-13', '1989-03-04']
. Затем, используя два цикла for, мы повторяем имена, и для каждого имени мы повторяем все даты.