我想知道如何合并两个词典来创建一个新词典。假设我有两个词典:
a = {'aa' : 'aaa', 'bb' : 'bbb', 'cc' : 'ccc'}
b = {'aa' : '111', 'bb' : '222', 'dd' : '444', 'ee' : '555'}
我想创建第三个字典,使用a和b中包含的键,但我希望值来自dict a。所以它看起来像这样:
c = {'aa' : 'aaa', 'bb' : 'bbb'}
任何人都可以帮我吗?
答案 0 :(得分:2)
对于python2,只需使用dict.viewkeys查找dict键的交集:
dictview&其他强>
将dictview和另一个对象的交集作为新集返回。
a = {'aa' : 'aaa', 'bb' : 'bbb', 'cc' : 'ccc'}
b = {'aa' : '111', 'bb' : '222', 'dd' : '444', 'ee' : '555'}
print({k:a[k] for k in a.viewkeys() & b})
{'aa': 'aaa', 'bb': 'bbb'}
对于python3,只需使用返回dictview对象的.keys:
a = {'aa' : 'aaa', 'bb' : 'bbb', 'cc' : 'ccc'}
b = {'aa' : '111', 'bb' : '222', 'dd' : '444', 'ee' : '555'}
print({k: a[k] for k in a.keys() & b})
{'aa': 'aaa', 'bb': 'bbb'}
答案 1 :(得分:0)
在Python 3.x中,我会得到dict.keys()
并对它们执行&
(交集),以获取公共密钥,然后从a
获取值。示例 -
a = {'aa' : 'aaa', 'bb' : 'bbb', 'cc' : 'ccc'}
b = {'aa' : '111', 'bb' : '222', 'dd' : '444', 'ee' : '555'}
c = {}
for k in (a.keys() & b.keys()):
c[k] = a[k]
字典理解方法 -
c = {k:a[k] for k in (a.keys() & b.keys())}
对于Python 2.7,您可以使用dict.viewkeys()
代替dict.keys()
方法。
示例/演示 -
>>> a = {'aa' : 'aaa', 'bb' : 'bbb', 'cc' : 'ccc'}
>>> b = {'aa' : '111', 'bb' : '222', 'dd' : '444', 'ee' : '555'}
>>> c = {}
>>> for k in (a.keys() & b.keys()):
... c[k] = a[k]
...
>>> c
{'aa': 'aaa', 'bb': 'bbb'}
答案 2 :(得分:0)
使所有密钥都是唯一的,并且您不会遇到新字典更新密钥从字典a到字典b的问题。您必须使所有密钥都是唯一的,但如果没有,请查看下面的代码,我在密钥名称中添加1以使其唯一。
a = {'aa' : 'aaa', 'bb' : 'bbb', 'cc' : 'ccc'}
b = {'aa' : '111', 'bb' : '222', 'dd' : '444', 'ee' : '555'}
c = a.copy()
count = 0
for k, v in b.items():
if a.has_key(k):
while True:
count += 1
if c.has_key(k+str(count)):
pass
else:
c[k+str(count)]=v
count = 0
break
else:
c[k]=v
print c
{'aa': 'aaa', 'bb': 'bbb', 'cc': 'ccc', 'dd': '444', 'ee': '555', 'aa1': '111', 'bb1': '222'}