我有两本字典,例如:
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
?
答案 0 :(得分:1)
在您的示例中,您的字典 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)
这里不是执行相同的循环两次(一次用于初始化,另一次用于填充),而是测试您的密钥是否存在并相应地进行。
答案 1 :(得分:1)
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']}