如果要对 d1 进行子集化,则它仅包含 d2 中存在的元素
d1 = {'Bob': 1, 'Mary': 2, 'Sue': 3, 'George': 4}
d2 = {'Bob': 101, 'Sue': 102, 'Jill': 103, 'Isaac': 104, 'George': 105}
{k: v for k, v in d1.items() if k in d2}
# {'Bob': 1, 'Sue': 3, 'George': 4}
或者你提到apply,所以你想更新 d2 中的值吗?
d2.update(d1)
print d2
# {'Sue': 3, 'Mary': 2, 'Jill': 103, 'Isaac': 104, 'Bob': 1, 'George': 4}
或者,如果你真的从两个列表开始(而不是从 dict 开始):
el1 = ['Bob', 'Mary', 'Sue', 'George']
el2 = ['Bob', 'Sue', 'Jill', 'Isaac', 'George']
dict( (val, idx) for idx, val in enumerate(d1, start=1) if val in set(el2) )
#{'Bob': 1, 'Sue': 3, 'George': 4}
如果您有两个列表,一个是键,一个是值,并且希望将它们设为dict
,那么您可以使用zip
:
keys = ['Bob', 'Mary', 'Sue', 'George']
vals = [1, 2, 3, 4]
dict( zip(keys, vals) )
# {'Bob': 1, 'Mary': 2, 'Sue': 3, 'George': 4}