只是想知道是否有更优雅的方法从列表中的特定对象检索值,具体取决于对象是否包含特定值,或者我是否必须编写内容来遍历列表并查看每个对象。例如:
class C(object):
def __init__(self, url, value):
self.url=url
self.value=value
obj1 = C("http://1", 1)
obj2 = C("http://2", 2)
mylist = [obj1, obj2]
# I want to search mylist and retrieve the "value" element if there is
# an object with a "url" value of "http://2"...basically retrieve the
# value 2 if an element exists in the list with a url value of "http://2"
当然,如果我知道它存在于列表的第一个元素中,我可以通过以下方式检索它:
mylist[1].value
但是,在我的情况下,我不知道列表中是否存在该对象,也不知道它在列表中的位置。
答案 0 :(得分:1)
您需要遍历列表并查看每个对象。
如果您希望匹配一个匹配项,则可以将next
与生成器表达式一起使用:
res = next((i.value for i in mylist if i.url == 'http://2'), None)
print(res)
# 2
如果您希望多次匹配,可以使用列表推导:
res = [i.value for i in mylist if i.url == 'http://2']
print(res)
# [2]