我已经很长时间没有使用python了,有点生疏了,但是对于第一个问题,我正在使用字典,并且需要与它相交以返回键和值。例如,我要输入
a = {1:'a1', 2.5:'a2', 4:'a3'}
b = {1:'a1', 3:'a2', 5:'a4'}
如果输入
c = intersect(a,b)
,我希望它返回{1:'a1'}
,但我只会返回{'a1'}
。到目前为止,我的代码是:
def intersect(a, b):
for i in a:
if j in b:
if a[i]==b[i]:
return ({i})
else:
return {}
最佳答案
您可以使用实际的set
交点简化此过程。这仅保留共享项(键和值相同):
def intersect(a, b):
return dict(set(a.items()) & set(b.items()))
如果您的
dict
参数具有不可散列的值,则可以按照以下几行进行dict
理解:def intersect(a, b):
return {k: a[k] for k in a if b.get(k, not a[k]) == a[k]}
您可以像这样修复原始方法:
def intersect(a, b):
d = {}
for i in a:
if i in b and a[i] == b[i]:
d[i] = a[i]
return d
关于python - Python字典交集,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48246092/