<p>你必须收集每个名字,每个领域的列表。在</p>
<p>将<code>collections.defaultdict</code>与工厂一起使用来创建嵌套列表:</p>
<pre><code>from collections import defaultdict
columns = ('score', 'level', 'extralives')
def per_user_data():
return {k: [] for k in columns}
stats_per_timechunk = []
for timechunk in listoflists:
# group data per user, per column (user -> {c1: [], c2: [], c3: []})
data = defaultdict(per_user_data)
for userdata in timechunk:
per_user = data[userdata[1]]
for column, value in zip(columns, userdata[2:]):
per_user[column].append(value)
# collect min, max and average stats per user, per column
# (user -> {c1: {min: 0, max: 0, avg: 0}, ..})
stats = {}
for user, per_user in data.iteritems():
stats[user] = {column: {
'min': min(per_user[column]),
'max': max(per_user[column]),
'avg': sum(per_user[column]) / float(len(per_user[column])),
} for column in columns}
stats_per_timechunk.append(stats)
</code></pre>
<p>将示例输入数据转储到一个timechunk中可以得到:</p>
^{pr2}$
<p>也许您应该考虑使用不同的数据结构而不是所有这些列表,或者使用类似于<a href="http://pandas.pydata.org/" rel="nofollow">pandas</a>的方法来帮助您更有效地分析数据。在</p>