我已经很长时间没有使用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/

10-12 21:33
查看更多