<p>使用列表理解和更新</p>
<pre><code>def merge_dicts(lst_dicts, keyword):
# List comprehension to get list of dicts with keyword
lst = [d[keyword] for d in lst_dicts if d.get(keyword)]
# Use update to place into one dictionary
result = {keyword:{}}
for d in lst:
result[keyword].update(d)
return result
</code></pre>
<p><strong>用法</strong></p>
<pre><code>result = merge_dicts(all_dicts, 'Pontos')
</code></pre>
<p><strong>示例</strong></p>
<pre><code>all_dicts = [{'Pontos': {'70': {0: {'atleta_id': 92981, 'apelido': 'Ronaldo'},
1: {'atleta_id': 107677, 'apelido': 'Juninho'},
2: {'atleta_id': 71937, 'apelido': 'Juninho'}
}
}
},
{'Pontos': {'75': {0: {'atleta_id': 85425, 'apelido': 'João Paulo'},
1: {'atleta_id': 71937, 'apelido': 'Juninho'},
2: {'atleta_id': 105998, 'apelido': 'Vinícius'}
}
}
},
{'Other': {'72': {0: {'atleta_id': 12981, 'apelido': 'Ronaldo'},
1: {'atleta_id': 207677, 'apelido': 'Juninho'},
2: {'atleta_id': 31937, 'apelido': 'Juninho'}
}
}
}]
</code></pre>
<p><em>结果</em></p>
<pre><code>{'Pontos': {'70': {0: {'atleta_id': 92981, 'apelido': 'Ronaldo'},
1: {'atleta_id': 107677, 'apelido': 'Juninho'},
2: {'atleta_id': 71937, 'apelido': 'Juninho'}},
'75': {0: {'atleta_id': 85425, 'apelido': 'João Paulo'},
1: {'atleta_id': 71937, 'apelido': 'Juninho'},
2: {'atleta_id': 105998, 'apelido': 'Vinícius'}}}}
</code></pre>