我有一个嵌套字典,如下所示:
{
1: {'Name': {'John'}, 'Answer': {'yes'}, 'Country': {'USA'}},
2: {'Name': {'Julia'}, 'Answer': {'no'}, 'Country': {'Hong Kong'}}
3: {'Name': {'Adam'}, 'Answer': {'yes'}, 'Country': {'Hong Kong'}}
}
我现在需要获得每个国家的事件发生率以及回答“是”或“否”的人数。目前,我只收集每个国家的事件发生率:
nationalities = ['USA', 'Hong Kong', 'France' ...]
for countries in nationalities:
cnt =[item for l in [v2 for v1 in dictionary1.values() for v2 in v1.values()] for item in l].count(countries)
result.append(countries + ': ' + str(cnt))
因此,使用我的数据表,我得到如下结果
['Hong Kong: 2', 'France: 2', 'Italy: 3']
然而,我想得到回答是和回答否的人的比例,这样我可以得到一个以['Hong Kong: 2 1 1']
形式列出的列表,其中第一个数字是总数,第二个和第三个数字分别是是是和否
谢谢你的帮助
我想做几个笔记。首先,我把国家换成了国家(在这样的for循环中使用复数名称是不正常的)。第二,我想评论一下,如果你上面的代码中有名字、答案和国家,我想你最好把它改成一个字符串
下面是一个可能的解决方案,使用
defaultdict
生成结果字典,将每个country
的yes
或no
的答案数相加:对于您的示例数据,这将提供
然后,您可以通过以下方式将其转换为字符串列表:
其中:
我将使用^{} 计算答案,并^{} 按国家对条目进行分组:
相关问题 更多 >
编程相关推荐