Python 组合2个字典并交换键和值

Python 组合2个字典并交换键和值,python,dictionary,Python,Dictionary,我有两本字典,如: d1 = { 'AAPL' : [1, 2, 3] , 'MSFT' : [3, 4, 5] } d2 = {1 : [], 2 : [], 3 : [], 4 : [], 5 : []} 我需要一本字典,比如: d3 = {1 : ['AAPL'], 2 : ['AAPL'], 3 : ['AAPL', 'MSFT'], 4 : ['MSFT'], 5 : ['MSFT']} 如何获取d3?在您的示例中,您的字典d2是无用的。仍然: d1 = { 'AAPL'

我有两本字典,如:

d1 = { 'AAPL' : [1, 2, 3] , 'MSFT' : [3, 4, 5] }

d2 = {1 : [], 2 : [], 3 : [], 4 : [], 5 : []} 
我需要一本字典,比如:

d3 = {1 : ['AAPL'], 2 : ['AAPL'], 3 : ['AAPL', 'MSFT'], 4 : ['MSFT'], 5 : ['MSFT']}  

如何获取
d3

在您的示例中,您的字典
d2
是无用的。仍然:

d1 = { 'AAPL' : [1, 2, 3] , 'MSFT' : [3, 4, 5] }

#d2 = {1 : [], 2 : [], 3 : [], 4 : [], 5 : []}

d3 = {}

for v in d1.values():
    for k in v:
        d3[k] = []

for k,v in d1.items():
    for x in v:
        d3[x].append(k)

print (d3)
输出:

{1: ['AAPL'], 2: ['AAPL'], 3: ['AAPL', 'MSFT'], 4: ['MSFT'], 5: ['MSFT']}
您还可以执行以下操作:

for k,v in d1.items():
    for x in v:
        if x not in d3.keys():
            d3[x] = []
        d3[x].append(k)

print (d3)

在这里,您不必两次执行相同的循环(一次到init,另一次到fill),而是测试您的密钥是否存在,并相应地进行操作。

A
collections.defaultdict
将很好地完成此操作

d1 = {'AAPL': [1, 2, 3], 'MSFT': [3, 4, 5]}

result = defaultdict(list)
for k, v in d1.items():
    for x in v:
        result[x].append(k)

print(result)
# {1: ['AAPL'], 2: ['AAPL'], 3: ['AAPL', 'MSFT'], 4: ['MSFT'], 5: ['MSFT']}

您没有发布尝试代码来执行此操作。请阅读此StackOverlow不是代码编写服务;请编辑您的诚实尝试,将此代码作为一个-包括所有需要的信息(包括数据),以便任何人都可以将您的代码粘贴到文件中,而无需添加任何内容。请运行代码以查看您遇到的相同问题。很抱歉,我是StackOverflow新手,我将在下一个问题中考虑您的评论。谢谢@mick_stackaccount看看这个