<p>一般提示:如果你在做</p>
<pre><code>for key, val in some_dict.iteritems():
if key == some_value:
do_something(val)
</code></pre>
<p>您很可能是做错了,因为您使用字典的目的不是很明确:通过元素的键访问元素。相反,做吧</p>
^{pr2}$
<p>如果不能确定<code>somedict[key]</code>是否存在,则使用异常。在</p>
<hr/>
<p>你不必为找到合适的密钥而在字典中反复搜索。直接访问,这就是字典的用途:</p>
<pre><code>main_dict={'name1':{'key1':'value1', 'key2':'value2'}, 'name2':{'key1':'value3', 'key2':'value8'}}
age_dicts = [{'age':'age_value1', 'name': 'name1'}, 'age':'age_value1', 'name': 'name2'}]
gender_dicts = [{'gender':'gen_value1', 'name': 'name1'}, 'gender':'gen_value2', 'name': 'name2'}]
for dct in age_dicts:
main_dict[dct['name']]['age'] = dct['age']
for dct in gender_dicts:
main_dict[dct['name']]['gender'] = dct['gender']
</code></pre>
<hr/>
<p>预编辑案例的具体答案:</p>
<pre><code>age_dict= {'name1':'age_value1', 'name2':'age_value2'}
gender_dict= {'name1':'gen_value1', 'name2':'gen_value2'}
</code></pre>
<p>如果您确定<code>gender_dict</code>和<code>age_dict</code>为每个名称提供值,那么</p>
<pre><code>for name, dct in main_dict.iteritems():
dct['age'] = age_dict[name]
dct['gender'] = gender_dict[name]
</code></pre>
<p>如果其他词典中有没有条目的名称,则可以使用例外:</p>
<pre><code>for name, dct in main_dict.iteritems():
try:
dct['age'] = age_dict[name]
except KeyError: # no such name in age_dict
pass
try:
dct['gender'] = gender_dict[name]
except KeyError: # no such name in gender_dict
pass
</code></pre>