我有一个对象数组(它们都是相同的对象类型)并且它们有多个属性,有没有办法返回一个更小的数组对象,其中所有的属性匹配一个测试用例,字符串,这个属性类型是什么。检查对象数组中的多个属性匹配
0
A
回答
3
使用all()
的列表理解;以下假定一个list_of_attributes
已预先定义枚举你想要的属性测试:
sublist = [ob for ob in larger_list if all(getattr(ob, attr) == 'some test string' for attr in list_of_attributes)]
另外,如果您的输入列表是大的,你只需要通过一个访问匹配的元素之一,使用一台发电机表达:
filtered = (ob for ob in larger_list if all(getattr(ob, attr) == 'some test string' for attr in list_of_attributes))
for match in filtered:
# do something with match
或可以使用filter()
function:
filtered = filter(lambda ob: all(getattr(ob, attr) == 'some test string' for attr in list_of_attributes)
for match in filtered:
# do something with match
代替使用预先定义的list_of_attributes
,你可以用vars()
function测试所有的属性;这个假定所有实例属性需要进行测试:不是阵列
all(value == 'some test string' for key, value in vars(ob))
+0
这回答我的问题,我发现它有点慢,因为我在一边有一个小小的清单,另一边是大清单(小清单本身相当大) – 2013-04-24 08:21:18
相关问题
- 1. 检查的对象数组属性值
- 2. 如何检查两个对象属性是否匹配?
- 3. 在对象数组中搜索匹配的属性和值对
- 4. 如何将对象的属性与对象数组的属性进行匹配?
- 5. 如何使用每个对象的所有属性过滤一个对象数组以检查匹配?
- 6. 检查jquery匹配键的对象数组。 + =如果匹配,则新对象
- 7. jQuery匹配属性数组中的对象的数据属性值
- 8. 循环遍历对象数组以查找具有匹配属性的对象
- 9. 检查对象中的两个属性
- 10. 对象数组中的不匹配属性
- 11. Mongo查找内部和对象数组的多个匹配
- 12. 检查var对数组的匹配
- 13. 搜索一个对象数组返回对象匹配属性值
- 14. in_array函数无法检查具有多个属性的对象
- 15. foreach通过匹配属性的对象数组
- 16. php:修改匹配数组的对象属性
- 17. 匹配多个属性
- 18. jQuery匹配多个属性
- 19. 查找对象数组中的匹配对象?
- 20. 检查AppleScript中的多个对象属性
- 21. Marklogic(的NodeJS API) - 匹配对象数组2(或更多)的条件属性
- 22. 如何遍历数组并检查属性是否匹配
- 23. 检查字符串数组是否与obj键/属性匹配
- 24. 将具有匹配属性的对象组合到列表中
- 25. 如何在Javascript中检查对象数组中的空对象属性
- 26. 通过Javascript中的多个属性对对象数组排序
- 27. jQuery在多维数组/对象中查找匹配值
- 28. 使用多个属性找到匹配对象
- 29. PHP,检查是否有属性=值对象中的对象的数组存在
- 30. 针对单个属性数据值匹配多个属性数据值
您的意思是名单也许?默认的'[]'类型是一个列表,但'numpy'库有数组。 – 2013-04-24 07:50:29
在我的例子中,列表和数组一样好,你在下面回答解决了我眼前的问题。 (我必须等待10分钟才能明显接受) – 2013-04-24 07:56:02