【发布时间】:2013-11-30 06:29:22
【问题描述】:
你如何通过比较对象的一个属性来发现两个对象之间的区别?
在本例中,如果两个对象的phone 属性相同,则称它们彼此相等。
a1 = {'name':'Tom', 'phone':'1234'}
a2 = {'name':'Dick', 'phone':'1111'}
a3 = {'name':'Harry', 'phone':'3333'}
a = [a1,a2,a3]
b1 = {'name':'Jane', 'phone':'1234'}
b2 = {'name':'Liz', 'phone':'2222'}
b3 = {'name':'Mary', 'phone':'4444'}
b = [b1,b2,b3]
def check(x, y):
if(x['phone'] == y['phone']):
return True
else:
return False
期望的结果应该是:
result_A_minus_B = [a2, a3]
result_B_minus_A = [b2, b3]
我在下面的尝试抛出错误TypeError: list indices must be integers, not str
[x for x in a if check(a,b)]
【问题讨论】:
-
这不是链接问题的副本。这个问题是关于计算一个列表的连续元素之间的差异,而这个问题是关于如果相应元素出现在第二个列表中的其他任何地方,则从一个列表中排除元素。
标签: python python-2.7