我有一個對象數組(它們都是相同的對象類型)並且它們有多個屬性,有沒有辦法返回一個更小的數組對象,其中所有的屬性匹配一個測試用例,字符串,這個屬性類型是什麼。檢查對象數組中的多個屬性匹配
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