我有一个巨大的嵌套字典(6k条记录),我需要根据第二个dict中的两个值进行排序和计数
item_dict = {
64762.0: {
'In Sheet': 'No',
'Paid': Y,
'Region': "AMER'",
'Matrix Position': 'Check'
},
130301.0: {
'Paid': N,
'Region': "AMER'",
'Matrix Position': 'Calculate'
},
13111.0: {
'In Sheet': 'Yes',
'Region': "EMEA'",
'Matrix Position': 'Check'
},
130321.0: {
'Matrix Position': 'Enhance',
'In Sheet': 'No',
'Paid': Y,
'Region': "JP'"
}
}
所以,我需要得到区域和矩阵位置之间的计数。所以,我会得到:
Amer and Calculate: 1
EMEA and Calculate: 0
EMEA and Check= 1
AMER and Check= 1
EMEA and Enhance= 0
JP and Check=0
等等。问题是,完整的数据集有5个区域和4个潜在的矩阵位置。最好的方法是使用for循环搜索每个潜在的组合,然后将其添加到自己的列表中吗?你知道吗
AmerCalculate=[]
for row in item_dict:
if item_dict[row]['Region'] == "AMER'" and item_dict[row]['Matrix Position'] == "Calculate":
AmerCalculate.append(row)
那么,要得到长度,请进行len(AmerCalculate)计算?有没有一个更优雅的方法,这样我就不必手动键入所有的20个组合?你知道吗
要获得所有组合,可以使用
itertools.product
。然后可以将结果存储在字典中:使用另一个字典将该数据集耦合在一起,从中可以生成要查找的输出:
样本输出:
我们现在有了基础来生成您要查找的报告。我们可以使用
Counter
来获得所有位置实例的计数。下面是一个如何检查list
映射值中的计数的示例。你知道吗这将返回一个字典,其格式如下:{
"region + matrixposition:": total}
例如{Amer and Calculate: 1, EMEA and calculate: 1}
你需要归还钥匙吗?或者只是每个地区每个职位的总数?你知道吗
相关问题 更多 >
编程相关推荐