繁体   English   中英

将多个列表转换为字典的更简单方法?

[英]Easier way to transform multiple lists into a dictionary?

现在,我有一本非常笨重的字典:

input_data = {'names': 'Elizabeth,Emily,Grant', 'titles': 'Sales,Accounting,Operations'}

nameList = input_data['names'].split(',')
titleList = input_data['titles'].split(',')

d1 = dict()
d2 = dict() 

for val in nameList: 
    d1.setdefault('Name', []).append(val) 

for val in titleList: 
    d2.setdefault('Title', []).append(val)

fullDict = dict(d1, **d2)

我相信有更好的方法来掩盖这一点:

{'names': 'Elizabeth,Emily,Grant', 'titles': 'Sales,Accounting,Operations'}

进入这个:

{'Name': ['Elizabeth', 'Emily', 'Grant'],
 'Title': ['Sales', 'Accounting', 'Operations']}

这个简单的字典理解似乎产生了你想要的结果。

{x: y.split(',') for x, y in input_data.items()}

如果名称部分也很重要,那么我认为这应该可行。

{x.title()[:-1] if x[-1] == 's' else x.title(): y.split(',') for x, y in input_data.items()}

所以你要完成两件事:拆分原始字典中的值,并重命名原始字典中的键。 您可以就地完成所有操作,而不是创建新字典。

input_data = {'names': 'Elizabeth,Emily,Grant', 'titles': 'Sales,Accounting,Operations'}

input_data['Name'] = input_data['names'].split(',')
input_data['Title'] = input_data['titles'].split(',')
del input_data['names'], input_data['titles']
print(input_data)

返回 output:

{'Name': ['Elizabeth', 'Emily', 'Grant'], 'Title': ['Sales', 'Accounting', 'Operations']}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM