<p>您只能使用<a href="https://docs.python.org/3/library/stdtypes.html#dict.setdefault" rel="nofollow noreferrer">basic dictionaries with setdefault</a>来执行此操作:</p>
<pre><code>d = [
{"state": "California", "county": "Monterey", "city": "Salinas"},
{"state": "California", "county": "Monterey", "city": "Gonzales"},
{"state": "Oregon", "county": "Douglas", "city": "Roseburg"},
{"state": "Oregon", "county": "Douglas", "city": "Winston"},
{"state": "California", "county": "Alameda", "city": "Berkeley"},
]
states = {}
for inner_dict in d:
state = inner_dict["state"] # not strictly needed
county = inner_dict["county"] # you could simply add them
city = inner_dict["city"] # directly to the setdefaults
states.setdefault(state, {}).setdefault(county, []).append(city)
print(states)
</code></pre>
<p>输出:</p>
<pre><code>{'California': {'Monterey': ['Salinas', 'Gonzales'],
'Alameda': ['Berkeley']},
'Oregon': {'Douglas': ['Roseburg', 'Winston']}}
</code></pre>
<p>如果您需要更快的速度,请查看<a href="https://docs.python.org/3/library/collections.html#collections.defaultdict" rel="nofollow noreferrer">for ^{<cd1>}'s</a>,它没有每次创建默认对象的开销:</p>