返回一个新字典,其中包含三个字典的所有键值对

时间:2020-01-24 15:39:10

标签: python dictionary

new_dict={}
d1={'name1':'Jaison','name3':'Eldose','name2':'Manu'}
d2={'age1':29,'age2':26,'age3':28}
d3={'job1':'NJ','job2':'SE','job3':'SE'}
def Combine_dictionaries(*args):
    for arg in args:
        for i,j in arg.items():
            print(i,j)
            new_dict[i]=[j]
    return new_dict  

print(Combine_dictionaries(d1,d2,d3))
print(new_dict.items())

输出:

dict_items([('name1', ['Jaison']), ('name3', ['Eldose']), ('name2', ['Manu']), ('age1', [29]), ('age2', [26]), ('age3', [28]), ('job1', ['NJ']), ('job2', ['SE']), ('job3', ['SE'])])

问题: 有什么建议可以提高产量吗?

1 个答案:

答案 0 :(得分:3)

我个人认为这可能不应该是字典。我不会索引到任何可能寻找“ name1”的字典中。我可能会列出此清单。

names = ['Jaison', 'Eldose', 'Manu'] # then names[0] = 'Jaison'
ages = [29, 26, 28]
jobs = ['NJ', 'SE', 'SE']

要组合它们,我们可以有一个字典列表中的元组列表。

people_list = [(names[i], ages[i], jobs[i]) for i in range(len(names))]
# [('Jaison', 29, 'NJ'), ('Eldose', 26, 'SE'), ('Manu', 28, 'SE')]
people_dict = [{'name':names[i], 'age':ages[i], 'job':jobs[i]} for i in range(len(names))]
#[{'name': 'Jaison', 'age': 29, 'job': 'NJ'}, {'name': 'Eldose', 'age': 26, 'job': 'SE'}, {'name': 'Manu', 'age': 28, 'job': 'SE'}]

不过只是一个建议。希望对您有帮助!