【问题标题】:Count how many times a value appears in dictionary ? (PYTHON 3)计算一个值在字典中出现的次数? (Python 3)
【发布时间】:2019-07-13 14:13:09
【问题描述】:

假设我有一个这样的名字列表:names = ['James','Bruce','John']

还有这样的字典:

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

我想创建一个字典来计算“医生”或“工程师”在字典中出现的次数,因此输出将类似于: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

有没有更快的方法来做到这一点?

【问题讨论】:

  • 欢迎来到 SO。在minimal reproducible example 的意义上,请注意您提供的代码是可执行的。字典不是有效的 python 代码。也就是说,这里有一个 nested 字典。你真的必须坚持这个设置吗?我认为有更好的方法来存储这种数据......

标签: python database list loops dictionary


【解决方案1】:

如果您不想导入任何内容,则可以通过仅循环一次字典来改进您的代码。我打电话给字典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)

【讨论】:

    【解决方案2】:

    您可以使用集合库中的 Counter 方法来实现这一点:

    from collections import Counter
    Counter([dict[person]['Job'] for person in dict])
    

    【讨论】:

      猜你喜欢
      • 2018-06-30
      • 2021-12-04
      • 1970-01-01
      • 2012-11-06
      • 2015-09-06
      • 2021-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多