Python:有效计数字典列表中某个键的唯一值的数量

问题描述:

必须有一个更好的方式来编写这个Python代码,我有一个人名单(人是词典),我试图找到这个数字某个特定键的唯一值(在这种情况下,密钥被称为国籍,我试图找到独特的民族数量的人员列表):Python:有效计数字典列表中某个键的唯一值的数量

no_of_nationalities = [] 
for p in people: 
    no_of_nationalities.append(p['Nationality']) 
print 'There are', len(set(no_of_nationalities)), 'nationalities in this list.' 

非常感谢

count = len(set(p['Nationality'] for p in people)) 
print 'There are' + str(count) + 'nationalities in this list.' 
+1

如果我正确地阅读了原文,'people'是字典的集合,但不是字典本身。 – 2011-05-19 17:06:56

+0

@Sven Marnach对,修正了。 – phihag 2011-05-19 17:10:04

更好的方法是直接从字典中构建set ionaries:

print len(set(p['Nationality'] for p in people)) 

len(set(x['Nationality'] for x in p)) 

collections模块

import collections 
.... 
count = collections.Counter() 
for p in people: 
    count[p['Nationality']] += 1; 
print 'There are', len(count), 'nationalities in this list.' 

这样你可以指望各民族过。

print(count.most_common(16))#print 16 most frequent nationalities