所以,如果我有2个dictionarys ..
opt1 = {"A" : 1,
"B" : 1,
"C" : 1,
}
opt2 = {"A" : "b",
"B" : "n",
"C" : "m",
}
除了制作列表字典之外,还有我可以把它变成1个字典吗?所以它会像..(我知道这不起作用..)
opt = {"A" : 1 : "b",
"B" : 2 : "n",
"C" : 3 : "m",
}
答案 0 :(得分:1)
将defaultdict与列表一起使用。
from collections import defaultdict
d = defaultdict(list)
for opt in (opt1, opt2,):
d.update(opt)
您可以根据需要添加任意数量的项目。
如果您想快速测试一个值的存在,没有重复的值而且您不需要保持插入顺序,也可以使用defaultdict(set)。
答案 1 :(得分:0)
opt1 = {"A" : 1,
"B" : 1,
"C" : 1,
}
opt2 = {"A" : "b",
"B" : "n",
"C" : "m",
}
answer = {}
for d in [opt1, opt2]:
for k,v in d.iteritems():
if k not in answer:
answer[k] = []
answer[k].append(v)
答案 2 :(得分:0)
如果你想要这样的东西:(元组作为值),如:
opt1_2 = {"A" : (1,"b"),
"B" : (1,"n"),
"C" : (1,"m"),
}
这是一个非常基本的方法
opt2_2 = {key:(opt1[key], opt2[key]) for key in opt1.keys()}
这假设密钥集是相同的(或至少1的所有密钥也是2的密钥,并且你不关心2中不在1的密钥。更复杂的理解会捕获到,但我会在这里保持简单。
答案 3 :(得分:0)
您可以这样做:
opt = {}
for i in opt1:
opt[i] = [opt1[i], opt2[i]]
这样,opt
的值为{'A': [1, 'b'], 'C': [1, 'm'], 'B': [1, 'n']}
这样的字典是不可能的:
opt = {"A" : 1 : "b",
"B" : 2 : "n",
"C" : 3 : "m",
}