Python 从字典列表中查找字典键的频率

Python 从字典列表中查找字典键的频率,python,python-3.x,dictionary,Python,Python 3.x,Dictionary,我应该在字典列表中找出不同键的频率 例如: 输入字典列表: [{'p1': 'val1', 'p2': 'val2', 'p3': 'val3', 'p4': 'val4'}, {'p1': 'val5', 'p7': 'val6', 'p3': 'val7'}, {'p1': 'val8', 'p2': 'val9', 'p9': 'val10', 'p7': 'val11'}] 输出格式:字典,键作为输入字典中的键,值作为包含频率的列表,值列表作为输入字典中的值。输出中键的顺序并不重要

我应该在字典列表中找出不同键的频率

例如:

输入字典列表:

[{'p1': 'val1', 'p2': 'val2', 'p3': 'val3', 'p4': 'val4'},
 {'p1': 'val5', 'p7': 'val6', 'p3': 'val7'},
 {'p1': 'val8', 'p2': 'val9', 'p9': 'val10', 'p7': 'val11'}]
输出格式:字典,键作为输入字典中的键,值作为包含频率的列表,值列表作为输入字典中的值。输出中键的顺序并不重要

输出:

{'p1': [3, ['val1', 'val5', 'val8']],
 'p2': [2, ['val2', 'val9']],
 'p3': [2, ['val3', 'val7']],
 'p4': [1, ['val4']],
 'p7': [2, ['val6', 'val11']],
 'p9': [1, ['val10']]
}
有没有一种有效的方法可以做到这一点?
非常感谢你的帮助

以下是获得所需输出的简单方法:

result = {}
for d in list_of_dicts:
    for k, v in d.items():
        result.setdefault(k, [0, []])
        result[k][0] += 1
        result[k][1].append(v)

以下是使用
pandas

将熊猫作为pd导入
#您的数据集
d1=[
{'p1':'val1','p2':'val2','p3':'val3','p4':'val4'},
{'p1':'val5','p7':'val6','p3':'val7'},
{'p1':'val8','p2':'val9','p9':'val10','p7':'val11'}]
#将数据集读入数据帧
df1=pd.DataFrame(数据=d1)
myDict=dict()
#在列上迭代,并将详细的值添加到字典中,以删除nan
对于标签,df1.iteritems()中的内容:
myContent=[如果str(content)!='nan',则内容中的内容对应于内容的内容]
myDict[label]=[len(myContent),myContent]
打印myDict
结果:


{'p2':[2,['val2','val9']],'p3':[2,['val3','val7']],'p1':[3,['val1','val5','val8']],'p7':[2,['val6','val11']],'p4':[1,['val4']],'p9':[1,['val10']}
这里有一个可能的解决方案(
lst
lst是您最初的输入:

dct
中包含的结果:

{'p1': [3, ['val1', 'val5', 'val8']],
 'p2': [2, ['val2', 'val9']],
 'p3': [2, ['val3', 'val7']],
 'p4': [1, ['val4']],
 'p7': [2, ['val6', 'val11']],
 'p9': [1, ['val10']]}

到目前为止,您尝试了什么?我对python还不熟悉,所以除了循环之外,我想不出任何东西,但我正在寻找一种更有效的方法,或者,以更有效的方式使用循环这应该是公认的答案,它比我的更简单!我想指出的是,你最近在这个网站上发表的文章中,有很大一部分都是关于离题的问题,这些问题最终都被关闭了。如果我没记错的话,我甚至看到你建议其他成员不要回答这样的问题@NicolasGervais谢谢你的反馈。我不认为这个问题应该“更集中”,因为它已经被标记了。输入和预期输出都是OP给出的。结果应该是什么很清楚,我认为这个问题非常有针对性。不过,感谢您的反馈,我将再次回顾您发布的指南。
{'p1': [3, ['val1', 'val5', 'val8']],
 'p2': [2, ['val2', 'val9']],
 'p3': [2, ['val3', 'val7']],
 'p4': [1, ['val4']],
 'p7': [2, ['val6', 'val11']],
 'p9': [1, ['val10']]}