<p>下面是一个可能的解决方案,使用<code>defaultdict</code>生成结果字典,将每个<code>country</code>的<code>yes</code>或<code>no</code>的答案数相加:</p>
<pre class="lang-py prettyprint-override"><code>from collections import defaultdict
dictionary1 = {
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']
result = defaultdict(list)
for countries in nationalities:
[yes, no] = [sum(list(d['Answer'])[0] == answer and list(d['Country'])[0] == countries for d in dictionary1.values()) for answer in ['yes', 'no']]
result[countries] = [ yes+no, yes, no ]
print(dict(result))
</code></pre>
<p>对于您的示例数据,这将提供</p>
<pre><code>{
'USA': [1, 1, 0],
'Hong Kong': [2, 1, 1],
'France': [0, 0, 0]
}
</code></pre>
<p>然后,您可以通过以下方式将其转换为字符串列表:</p>
<pre class="lang-py prettyprint-override"><code>result = [ f"{key}: {' '.join(map(str, counts))}" for key, counts in result.items()]
</code></pre>
<p>其中:</p>
<pre><code>['USA: 1 1 0', 'Hong Kong: 2 1 1', 'France: 0 0 0']
</code></pre>