如何在人员名单中找到不同国家的数量?

时间:2013-01-14 14:33:06

标签: python python-2.x

如何在人员名单中查找不同国家的数量?我有简单的班级人员

class Person(object):
    def __init__(self, nation, name):
        self.nation = nation
        self.name = name
        ...

我可以遍历列表和增量字典(如果存在键值国家其他值为1)并获得国家的关键数量和国家数量但我不知道是否有更多的pythonic方式,如linq in C#

1 个答案:

答案 0 :(得分:5)

如果您想要不同国家/地区的数量,您只需获取len的{​​{1}}即可。例如:

set

然后

class Person(object):
    def __init__(self, nation, name):
        self.nation = nation
        self.name = name

People = [Person("Canada", "Dave"), Person("Scotland", "Alex"), Person("Canada", "Fred"), Person("Japan", "Kenta")]

>>> set(p.nation for p in People) set(['Canada', 'Japan', 'Scotland']) >>> {p.nation for p in People} # python 2.7 set(['Canada', 'Japan', 'Scotland']) >>> len({p.nation for p in People}) 3 是一个“生成器表达式”,而(x for x in y)是一个“集合理解”(仅适用于2.7+ - 它类似于列表理解,但适用于集合。)

如果您需要更具体的信息,可以使用{x for x in y}对象:

Counter