我有两个包含元组作为键的python词典,并作为值浮动,以便它们显示为
dict1 = {(name1,name2):data1a, (name2,name3):data2a, ...}
和
dict2 = {(name1,name2):data1b, (name2,name3):data2b, ...}
字典的长度不一样,我想基于它们的键来执行它们的联合,这样我就留下了一个字典,其中包含两个值的元组。这将显示为
dict_unified = {(name1, name2) : (data1a,data1b), (name2,name3) : (data2a,data2b)}
我知道dictionary.update()
有效地进行了这次合并,但它包含的密钥值对只存在于我想要排除的单个字典中,并且只为每个密钥保留一个值。
答案 0 :(得分:0)
使用字典理解怎么样:
{key: (value1, dict2[key]) for key, value1 in dict1.iteritems() if key in dict2}
这会保留dict1
和dict2
共有的密钥,并将它们的值合并到元组中。
答案 1 :(得分:0)
要获取属于这两个词典的键,可以使用set.intersection
(因为这是一个交集,而不是联合):
>>> d1 = {(1, 2): 3, (4, 5): 6}
>>> d2 = {(1, 2): 7, (8, 9): 10}
>>> set(d1).intersection(d2)
{(1, 2)}
然后使用两个词典中的相应值构建一个字典:
>>> {k: (d1[k], d2[k]) for k in set(d1).intersection(d2)}
{(1, 2): (3, 7)}