Python:高效统计字典列表中键的唯一值数量

5 投票
4 回答
10492 浏览
提问于 2025-04-16 17:58

我想找一种更好的方法来写这段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.'

非常感谢

4 个回答

0

在编程中,有时候我们会遇到一些问题,像是代码运行不正常或者出现错误。这种情况下,我们需要找到问题的根源,看看是哪里出了错。通常,我们可以通过查看错误信息来帮助我们理解问题所在。

错误信息就像是程序在告诉我们:“嘿,我在这里遇到麻烦了!”它们会提供一些线索,比如出错的地方和可能的原因。我们可以根据这些信息来调整代码,试图解决问题。

有时候,错误信息可能会比较复杂,特别是对于刚开始学习编程的人来说。这个时候,可以尝试在网上搜索错误信息,看看其他人是怎么解决类似问题的。社区里有很多热心的人,他们会分享自己的经验和解决方案。

总之,遇到问题时不要慌张,仔细阅读错误信息,寻找解决办法,慢慢你就会变得更加熟练了。

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

这里有一个叫做 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 
11

更好的方法是直接从字典中构建一个 set(集合):

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

撰写回答