擅长:python、mysql、java
<p>你的问题是你在给你的<code>city_names</code>循环中的<code>field_dict</code>赋值给<code>aggregated_dict[city]</code>,这只是给每个城市分配相同的字典。当您更新任何引用(对于任何城市)时,所有引用都会更新。你知道吗</p>
<p>一个简单的解决办法就是改变</p>
<pre><code>for city in city_names:
aggregated_dict[city] = field_dict
</code></pre>
<p>收件人:</p>
<pre><code>for city in city_names:
aggregated_dict[city] = {field: [] for field in cust_fields}
</code></pre>
<p>对于这种类型的聚合,我还要看<a href="https://docs.python.org/2/library/collections.html#collections.defaultdict" rel="nofollow noreferrer">collections.defaultdict</a>。你知道吗</p>
<pre><code>from collections import defaultdict
collected = defaultdict(lambda: defaultdict(list))
for _, city_records in myDict['123456'].items():
for city_name, records in city_records.items():
for record_name, record_value in records.items():
collected[city_name][record_name].append(record_value)
for city_name, records in collected.items():
print city_name
print dict(records)
</code></pre>