我可以在字典中有3个元素吗?

时间:2014-01-30 20:36:20

标签: python

所以,如果我有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",
    }

4 个答案:

答案 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",
    }