在Python中获取字典中值的第一项的频率计数

在Python中获取字典中值的第一项的频率计数,python,dictionary,iterator,key,frequency,Python,Dictionary,Iterator,Key,Frequency,我有一本由key:valuelist组成的字典。我想对字典中列表中的第一个元素进行频率计数 字典的外观示例如下: dict_id = {'id_111': ['10'], 'id_222': ['10', '10'], 'id_234': ['9'], 'id_654': ['13', '10'], ..} 预期结果: [(['10'], 2), (['9'], 1), (['13'], 1), ...] 这是我尝试过的,但它使用整个列表作为键,而不是列表中的第一个元素 newDict =

我有一本由key:valuelist组成的字典。我想对字典中列表中的第一个元素进行频率计数

字典的外观示例如下:

dict_id = {'id_111': ['10'], 'id_222': ['10', '10'], 'id_234': ['9'], 'id_654': ['13', '10'], ..}
预期结果:

[(['10'], 2), (['9'], 1), (['13'], 1), ...]
这是我尝试过的,但它使用整个列表作为键,而不是列表中的第一个元素

newDict = [(k, len(list(v))) for k, v in itertools.groupby(ids.values())]
print newDict

>> [(['10'], 1), (['10', '10'], 1), (['13', '10'], 1), ...]
感谢您的帮助

newDict = {}
for k, v in dict_id.iteritems():
    if v[0] in newDict:
        newDict[v[0]] += 1
    else:
        newDict[v[0]] = 1
print newDict
这将创建一个实际的字典

from collections import Counter
print Counter(dict_id[k][0] for k in dict_id)
# Counter({'10': 2, '9': 1, '13': 1})
这将创建一个实际的字典

from collections import Counter
print Counter(dict_id[k][0] for k in dict_id)
# Counter({'10': 2, '9': 1, '13': 1})
如果希望输出采用问题中指定的格式

print [([k], c) for k, c in Counter(dict_id[k][0] for k in dict_id).items()]
# [(['9'], 1), (['10'], 2), (['13'], 1)]
如果希望输出采用问题中指定的格式

print [([k], c) for k, c in Counter(dict_id[k][0] for k in dict_id).items()]
# [(['9'], 1), (['10'], 2), (['13'], 1)]

喜欢这些反问句:P>>>字典id={'id_111':['10'],'id_222':['10','10'],'id_234':['9'],'id_654':['13','10'],'id_333;':['10','7']>>在字典id计数器{'10':3',9':1',1}中打印k的反问句id[k][0],先生,您只检查[k][0]。在这种情况下不起作用。@TanveerAlam我相信这就是OP想要的:喜欢那些反问句:P>>>dict_id={'id_111':['10'],'id_222':['10','10'],'id_234':['9'],'id_654':['13','10'],'id_333':['10','7']>>在dict_id计数器中打印k的反问句:3','9''1','13}先生,您只检查[k][0]。在这种情况下不工作。@TanveerAlam我相信这就是OP想要的: