如何在人员名单中查找不同国家的数量?我有简单的班级人员
class Person(object):
def __init__(self, nation, name):
self.nation = nation
self.name = name
...
我可以遍历列表和增量字典(如果存在键值国家其他值为1)并获得国家的关键数量和国家数量但我不知道是否有更多的pythonic方式,如linq in C#
答案 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