Несколько возможных улучшений, но к вашей основной проблеме, используйте полное имя и set
в качестве вашей структуры, и split
в пространстве для создания другого диктанта (который, я не уверен, вам нужен):
names = {
'Bucky Roberts',
'Tom Roberts',
'Bernie Zunks',
'Jenna Hayes',
'Sally Jones',
'Amanda Roberts',
'Tom Williams',
'Dean Hayes',
'Bernie Barbie',
'Tom Jones'
}
users = []
for name in names:
k, v = name.split()
users.append({'fname':k,'lname':v})
for x in sorted(users, key=itemgetter('fname')):
print(x)
Производит:
{'fname': 'Amanda', 'lname': 'Roberts'}
{'fname': 'Bernie', 'lname': 'Barbie'}
{'fname': 'Bernie', 'lname': 'Zunks'}
{'fname': 'Bucky', 'lname': 'Roberts'}
{'fname': 'Dean', 'lname': 'Hayes'}
{'fname': 'Jenna', 'lname': 'Hayes'}
{'fname': 'Sally', 'lname': 'Jones'}
{'fname': 'Tom', 'lname': 'Williams'}
{'fname': 'Tom', 'lname': 'Jones'}
{'fname': 'Tom', 'lname': 'Roberts'}
РЕДАКТИРОВАТЬ: используя кортежи и добавляя Betty Sue Johnson
:
names = {
('Bucky', 'Roberts'),
('Betty Sue', 'Johnson'),
('Tom', 'Roberts'),
('Bernie', 'Zunks'),
('Jenna', 'Hayes'),
('Sally', 'Jones'),
('Amanda', 'Roberts'),
('Tom', 'Williams'),
('Dean', 'Hayes'),
('Bernie', 'Barbie'),
('Tom', 'Jones')
}
for each in sorted([{'fname':n[0], 'lname':n[1]} for n in names], key=itemgetter('fname')):
print(each)
С выводом:
{'fname': 'Amanda', 'lname': 'Roberts'}
{'fname': 'Bernie', 'lname': 'Zunks'}
{'fname': 'Bernie', 'lname': 'Barbie'}
{'fname': 'Betty Sue', 'lname': 'Johnson'}
{'fname': 'Bucky', 'lname': 'Roberts'}
{'fname': 'Dean', 'lname': 'Hayes'}
{'fname': 'Jenna', 'lname': 'Hayes'}
{'fname': 'Sally', 'lname': 'Jones'}
{'fname': 'Tom', 'lname': 'Roberts'}
{'fname': 'Tom', 'lname': 'Williams'}
{'fname': 'Tom', 'lname': 'Jones'}