Python: эффективный подсчет количества уникальных значений ключа в списке словарей - PullRequest
5 голосов
/ 19 мая 2011

Должен быть лучший способ написания этого кода на 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 ]

11 голосов
/ 19 мая 2011

Лучший способ - построить set прямо из словарей:

print len(set(p['Nationality'] for p in people))
2 голосов
/ 19 мая 2011

Есть 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 
0 голосов
/ 19 мая 2011
len(set(x['Nationality'] for x in p))
0 голосов
/ 19 мая 2011
count = len(set(p['Nationality'] for p in people))
print 'There are' + str(count) + 'nationalities in this list.'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...