我是新手Python程序员,遇到了这个问题,由于英语不是我的母语,所以在解决这个问题时有点困难,但按我理解这个问题写了我的代码,请问我是否正确?如果不正确,请改进我的代码或提供你的代码。
假设您有两个字典d1和d2,每个字典都有整数键和整数值。您还得到一个函数f,它接受两个整数,在它们上执行未知操作,并返回一个值。
编写一个名为dict_interdiff的函数,它接受两个字典(d1和d2)。该函数将返回两个字典的元组:d1和d2的交集字典以及d1和d2的差异字典,计算如下:
'''交集:交集字典的键是d1和d2中共同的键。要获取交集字典的值,请查看d1和d2中的公共键,并将函数f应用于这些键的值--d1中公共键的值是函数的第一个参数,d2中公共键的值是函数的第二个参数。不要在dict_interdiff代码中实现f--假定它在外部已定义。
差异:差异字典中的键值对是(a)仅在d1中出现而不在d2中的每个键-值对或(b)仅在d2中出现而不在d1中的每个键-值对。'''
以下是两个示例:
'''If f(a, b) returns a + b
d1 = {1:30, 2:20, 3:30, 5:80}
d2 = {1:40, 2:50, 3:60, 4:70, 6:90}
then dict_interdiff(d1, d2)
returns ({1: 70, 2: 70, 3: 90}, {4: 70, 5: 80, 6: 90})
If f(a, b) returns a > b
d1 = {1:30, 2:20, 3:30}
d2 = {1:40, 2:50, 3:60}
then dict_interdiff(d1, d2)
returns ({1: False, 2: False, 3: False}, {})'''
这是我的代码:
def dict_interdiff(d1, d2):
a=d1.keys()
b=d2.keys()
c=d1.values()
d=d2.values()
e=()
u={}
f=[]
g=[]
for i in range(max(a,b)):
if a[i]==b[i]:
u=f(a[i],b[i])
elif a[i] not in b:
t=c.find(a[i])
f.append(c[t])
g.append(a[i])
k=dict(zip(g,f))
elif b[i] not in a:
t=c.find(b[i])
f.append(d[t])
g.append(b[i])
k=dict(zip(g,f))
e+(u,)+(k,)
return e
此外,我无法检查我的代码,因为它假定f已定义,而我不知道这一点,因此无法在我的解释器中运行。
max(len(a), len(b))
而不是max(a, b)
来解决这个问题,但是我又遇到了另一个错误,我不知道该如何解决。 - zondo