girls = ['alice', 'bernice', 'clarice']
boys = ['chris', 'arnold', 'bob']
girls
и boys
являются два lists
`letterGirls = {}`
letterGirls
является метод dictionary
setdefault()
установит dict_var[key]=default
если ключ уже не в dict_var (в вашем случае dict_var
letterGirls
)
dict_var.setdefault() использование
dict-var.setdefault(somekey,[]).append(somevalue)
В коде
letterGirls.setdefault(girl[0], []).append(girl)
сделает словарь формы
{'c': ['clarice'], 'b': ['bernice'], 'a': ['alice']}
ключ girl[0]
т.е. первая буква имени.
С вашим скриптом возникла проблема с отступом. Другим разумным результатом будет Key error
.
Это должно быть
girls = ['alice', 'bernice', 'clarice']
boys = ['chris', 'arnold', 'bob']
letterGirls = {}
for girl in girls:
letterGirls.setdefault(girl[0], []).append(girl)
print ([b+'+'+g for b in boys for g in letterGirls[b[0]]])
вашего выхода
['chris+clarice', 'arnold+alice', 'bob+bernice']
является obatined, принимая каждый элемент в списке мальчиков и найти имя девушки с тем же первой буквой из словаря letterGirls
Что, в частности, Разве вы не понимаете? – EJoshuaS