Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在人员列表中查找不同国家的数量?_Python_Python 2.x - Fatal编程技术网

Python 如何在人员列表中查找不同国家的数量?

Python 如何在人员列表中查找不同国家的数量?,python,python-2.x,Python,Python 2.x,如何在人员列表中查找不同国家的数量?我有一个简单的班上人 class Person(object): def __init__(self, nation, name): self.nation = nation self.name = name ... 我可以迭代列表和增量字典(如果存在key nation,则用值1输入),并获得key si的数量国家的数量和成员的数量,但我想知道是否还有其他类似Python的方法,如c#中的linq,如

如何在人员列表中查找不同国家的数量?我有一个简单的班上人

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

我可以迭代列表和增量字典(如果存在key nation,则用值1输入),并获得key si的数量国家的数量和成员的数量,但我想知道是否还有其他类似Python的方法,如c#

中的linq,如果您想要不同国家的数量,您只需获取
集合的
len
。例如:

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代表x在y中)
是一个“生成器表达式,
{x代表x在y中}
是一个“集合理解”(仅在2.7+中可用——它类似于列表理解,但适用于集合)

如果需要更具体的信息,可以使用
计数器
对象:

>>> from collections import Counter
>>> c = Counter(p.nation for p in People)
>>> c
Counter({'Canada': 2, 'Japan': 1, 'Scotland': 1})
>>> len(c)
3
>>> sum(c.values())
4

如果你想知道不同国家的数量,你只需取
集合的
len
。例如:

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代表x在y中)
是一个“生成器表达式,
{x代表x在y中}
是一个“集合理解”(仅在2.7+中可用——它类似于列表理解,但适用于集合)

如果需要更具体的信息,可以使用
计数器
对象:

>>> from collections import Counter
>>> c = Counter(p.nation for p in People)
>>> c
Counter({'Canada': 2, 'Japan': 1, 'Scotland': 1})
>>> len(c)
3
>>> sum(c.values())
4

+1.我不仅反应太慢,而且对一个更完整的答案反应太慢。我不仅反应太慢,而且对一个更完整的答案反应太慢。。