我需要将数据库行对象列表加载到内存中,然后通过其唯一ID获取其中一行。是否有一种干净,pythonic方式通过属性值从列表中查找单个对象?或者我只是循环和比较?
答案 0 :(得分:15)
是的,你循环并比较:
items = [item for item in container if item.attribute == value]
然后你会找到一个可以测试的列表,看看你发现了多少。
如果您要这么做,请考虑使用字典,其中键是您感兴趣的属性。
答案 1 :(得分:13)
如果你这样做,它只会给出第一个匹配,而不是比较整个列表:find first sequence item that matches a criterion。
如果您执行此类操作,则无需捕获异常,而是获取None
:
item = next((i for i in items if i == 'value'), None)
答案 2 :(得分:4)
你可以filter:
matches = filter(lambda obj: obj.attribute == "target value", myListOfObjects)
请参阅kindall的答案以获取有关效率的建议。如果你这么做,那就不是正确的方法了。