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.我不仅反应太慢,而且对一个更完整的答案反应太慢。我不仅反应太慢,而且对一个更完整的答案反应太慢。。