【发布时间】:2018-10-29 09:04:43
【问题描述】:
代码:
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如何避免?
【问题讨论】:
-
问题出在你定义
names时。 -
dict中不能有重复的键,因此在创建names字典时,Tom和Bernie键会被后面的条目覆盖。如果您想保留重复的条目,请将条目作为元组存储在list(或set,如果您不关心顺序)中。 -
@Rex5,更好的是有一个具有多个值的键,即你可以有一个键(常见的 fname)指向一个列表对应的lname。 例如
{'Bernie': ['Zunks', 'Barbie']}。您可以在我的回答中查看完整示例。
标签: python dictionary nested python-3.4