<p>这里我们可以使用<a href="http://docs.python.org/library/collections.html#collections.Counter" rel="nofollow">^{<cd1>}</a>:</p>
<pre><code>from collections import Counter
answers = [
{'Question 1': {'Job': 'job1', 'Country': 'USA', 'Car': 'Porche'}},
{'Question 1': {'Job': 'job2', 'Country': 'UK', 'Car': 'Nissan'}},
{'Question 3': {'Job': 'job8', 'Country': 'GR', 'Car': 'Toyota'}},
{'Question 4': {'Job': 'job1', 'Country': 'USA', 'Car': 'Toyota'}},
{'Question 4': {'Job': 'job5', 'Country': 'USA', 'Car': 'Toyota'}},
{'Question 4': {'Job': 'job5', 'Country': 'USA', 'Car': 'Porche'}},
]
counted = Counter([item for q in answers for answer in q.values() for item in answer.items()])
</code></pre>
<p>我将<code>list</code>重命名为<code>answers</code>,以避免与<code>list()</code>内置函数混淆。在</p>
<p><code>Counter</code>对列表中的单个项进行计数,因此我们这里要做的是使用列表理解从列表中提取单个项—因为问题似乎并不重要,给定您的示例,然后使用计数器对它们进行计数。请注意,这是一个相当复杂的列表理解,因为您的数据结构有点笨拙,您可能需要考虑更改它。然后返回:</p>
^{pr2}$
<p>如果您想选择单独的东西,您可以这样做,例如:</p>
<pre><code>countries = [(key, value) for (key, value) in counted.items() if key[0] == "Country"]
</code></pre>
<p>这给了我们:</p>
<pre><code>[
(('Country', 'UK'), 1),
(('Country', 'GR'), 1),
(('Country', 'USA'), 4)
]
</code></pre>
<p>如果您需要计算回答上述问题的用户数量,只需通过更改列表理解功能选择的内容来更改计数器的焦点,例如:</p>
<pre><code>countedQuestions = Counter([question for q in answers for question in q])
</code></pre>
<p>这给了我们:</p>
<pre><code>Counter({
'Question 4': 3,
'Question 1': 2,
'Question 3': 1
})
</code></pre>
<p>而且<code>Counter</code>对象是<code>dict</code>的,因此您可以像使用<code>dict</code>一样使用它们:</p>
<pre><code>print("Number of users that answer Question 4:", countedQuestions['Question 4'])
Number of users that answer Question 4: 3
</code></pre>