如果这个问题已经被问过,我深表歉意,但我认为我不知道通过谷歌搜索合适的解决方案的正确术语。
我想通过对象的属性值从对象列表中选择一个对象,例如:
class Example():
def __init__(self):
self.pList = []
def addPerson(self,name,number):
self.pList.append(Person(self,name,number))
class Person():
def __init__(self,name,number):
self.nom = name
self.num = number
a = Example()
a.addPerson('dave',123)
a.addPerson('mike',345)
a.pList #.... somehow select dave by giving the value 123
就我而言,该号码始终是唯一的
谢谢您的帮助
一种选择是使用next()
内置:
dave = next(person for person in a.pList if person.num == 123)
这会抛出StopIteration
如果什么也没找到。您可以使用两个参数的形式next()
为这种情况提供默认值:
dave = next(
(person for person in a.pList if person.num == 123),
None,
)
一个稍微冗长的替代方案是 for 循环:
for person in a.pList:
if person.num == 123:
break
else:
print "Not found."
person = None
dave = person
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)