일치하는 속성이있는 객체 목록의 Python 개수 요소


Answers

나는 이것이 오래된 질문이지만 요즘은 이렇게 할 수있는 한 가지 방법이 될 것이라고 생각한다.

from collections import Counter

c = Counter(getattr(person, 'gender') for person in PeopleList)
# c now is a map of attribute values to counts -- eg: c['F']
Question

나는 조건에 일치하는 목록의 객체 수를 계산하는 간단하고 빠른 방법을 찾으려고합니다. 예

class Person:
    def __init__(self, Name, Age, Gender):
        self.Name = Name
        self.Age = Age
        self.Gender = Gender

# List of People
PeopleList = [Person("Joan", 15, "F"), 
              Person("Henry", 18, "M"), 
              Person("Marg", 21, "F")]

이제이 목록에서 해당 속성을 기반으로하는 인수와 일치하는 개체의 수를 계산하는 가장 간단한 함수는 무엇입니까? 예를 들어, Person.Gender == "F"또는 Person.Age <20의 경우 2를 반환합니다.




개인적으로 나는 함수를 정의하는 것이 여러 용도에 비해 더 단순하다고 생각한다.

def count(seq, pred):
    return sum(1 for v in seq if pred(v))

print(count(PeopleList, lambda p: p.Gender == "F"))
print(count(PeopleList, lambda p: p.Age < 20))

특히 쿼리를 다시 사용하려는 경우




Links