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看看这个