Посчитайте, сколько раз значение появляется в словаре?(ПИТОН 3) - PullRequest
0 голосов
/ 20 февраля 2019

Предположим, у меня есть список имен вроде этого: names = ['James', 'Bruce', 'John']

и словарь, подобный этому:

                dict= { 
                     'James':{ 'Job' :'Engineer'},          
                       'Bruce':{'Job' : 'Engineer'},
                        'John':{'Job' :'Doctor'}
                         }

IЯ хочу создать словарь, в котором будет подсчитано, сколько раз в словаре появятся слова «Доктор» или «Инженер», поэтому выходные данные будут выглядеть следующим образом: count = {'Doctor':1, 'Engineer':2}.

Мое решение - создать список заданий, а затем подсчитатьсколько раз это задание появляется в списке и выглядит так:

job_list=[]
count ={}
for k in names:
      job_list.append(dict[k]['Job'] #( so i can have a list like this:
                           #job_list =  ['Engineer','Engineer','Doctor'])
for i in job_list:
    count[i] = 0 
for i in job_list:
    count[i] += 1

Есть ли более быстрый способ сделать это?

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Если вы не хотите что-либо импортировать, ваш код можно улучшить, пройдя по словарю один раз.Я звоню диктату d

job_counts = {}
for k in names:
    job = d[k]['Job']
    if job in job_counts:
        job_counts[job] += 1
    else:
        job_counts[job] = 1

print(job_counts)
0 голосов
/ 20 февраля 2019

Вы можете использовать метод Counter в библиотеке коллекций для достижения этой цели в одну строку:

from collections import Counter
Counter([dict[person]['Job'] for person in dict])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...