代码:
from operator import itemgetter
names = {
'Bucky': 'Roberts',
'Tom': 'Roberts',
'Bernie' : 'Zunks',
'Jenna' : 'Hayes',
'Sally': 'Jones',
'Amanda':'Roberts',
'Tom':'Williams',
'Dean':'Hayes',
'Bernie':'Barbie',
'Tom':'Jones'
}
users = []
for k,v in names.items():
users.append({'fname':k,'lname':v})
print(users)
for x in sorted(users, key=itemgetter('fname')):
print(x)
问题:对于最后一个 for
循环(排序一个)来显示字典 names
的所有条目,我需要所有条目,即重复键(一对多映射)也。但是在创建嵌套字典 users
时,遗漏了 2 个 Tom(s)
和 1 个 Bernie
。如何避免使用 python 3.4?
最佳答案
一些可能的改进,但对于你的主要问题,使用全名和一个set
作为你的结构,并在空间上split
来创建另一个dict(我不确定你是否需要):
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'}
关于python - 嵌套字典中的多个键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50419505/