如何通过比较对象的一个属性来找出两个对象之间的差异?在
在本例中,如果两个对象的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
预期结果应为:
^{pr2}$我下面的尝试抛出一个错误TypeError: list indices must be integers, not str
[x for x in a if check(a,b)]
此功能:
给出了以下结果:
^{pr2}$如果可以更改数据类型,dict可能更好。您可以使用电话号码作为检索姓名的键。在
对于给定的数据结构,您将不得不重复遍历第二个字典列表中的项,这相对效率较低。你关心的是给定的电话号码是否已经存在于第二个字典列表中。重复测试给定值是否存在的最有效的数据结构是
set
(或者dict
,如果您可能需要从电话号码索引回更多信息)。因此,我将按以下方式进行:或者,如果我想创建一个函数:
^{pr2}$或者,您可以使用任意键:
该版本总是跳过list1中没有定义请求的键的条目-其他行为是可能的。在
为了匹配简短出现的注释所暗示的多个键,我将使用一组值的元组:
同样,这可以被推广到处理一系列键。在
相关问题 更多 >
编程相关推荐