python - 嵌套字典中的多个键

标签 python dictionary nested python-3.4

代码:

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/

相关文章:

python - 使用 python psychopg2 获取数据库中包含特定字符串的所有变量的计数

c# - 如何将枚举对象绑定(bind)到按钮的背景?

CSS 网格和嵌套元素

python - Visual Studio 2017 无法识别代码中的错误

python - 将标题添加到 Django EmailMultiAlternatives

Python datetime 无法解释的秒和微秒之间的区别

swift - 如何在 Swift 中将核心数据对象提取到字典中?

python - 以特定格式打印键值对

r - 在 R 的当前目录中创建嵌套文件夹?

Python:While 循环内的多个 While 循环