<p><code>for</code>循环是python的王道。<code>while</code>循环有自己的位置,但是python中的大多数对象都可以使用<code>for item in object:</code>语法进行迭代。你知道吗</p>
<p>有一种方法:</p>
<pre><code>from collections import defaultdict
MaleDict = {'Jason':[(2014, 394),(2013, 350)], 'Stephanie':[(2014, 3), (2013, 21),]}
FemaleDict = {'Jason':[(2014, 56),(2013, 23)], 'Stephanie':[(2014, 335), (2013, 217),]}
name_keys = set(MaleDict.keys() + FemaleDict.keys())
combined_names = {}
for name_key in name_keys:
combined_values = defaultdict(list)
male_values_dict = dict(MaleDict[name_key])
female_values_dict = dict(FemaleDict[name_key])
year_keys = set(male_values_dict.keys() + female_values_dict.keys())
for year_key in year_keys:
combined_values[year_key].append(male_values_dict[year_key])
combined_values[year_key].append(female_values_dict[year_key])
combined_names[name_key] = dict(combined_values)
</code></pre>
<p>输出:</p>
<pre><code>{'Jason': {2013: [350, 23], 2014: [394, 56]},
'Stephanie': {2013: [21, 217], 2014: [3, 335]}}
</code></pre>
<p>或者如果希望将元组保留为值:</p>
<pre><code>from collections import defaultdict
MaleDict = {'Jason':[(2014, 394),(2013, 350)], 'Stephanie':[(2014, 3), (2013, 21),]}
FemaleDict = {'Jason':[(2014, 56),(2013, 23)], 'Stephanie':[(2014, 335), (2013, 217),]}
name_keys = set(MaleDict.keys() + FemaleDict.keys())
combined_names = {}
for name_key in name_keys:
combined_values = []
male_values_dict = dict(MaleDict[name_key])
female_values_dict = dict(FemaleDict[name_key])
year_keys = set(male_values_dict.keys() + female_values_dict.keys())
for year_key in year_keys:
tuple_result = (year_key, male_values_dict[year_key], female_values_dict[year_key])
combined_values.append(tuple_result)
combined_names[name_key] = combined_values
</code></pre>
<p>输出:</p>
<pre><code>{'Jason': [(2013, 350, 23), (2014, 394, 56)],
'Stephanie': [(2013, 21, 217), (2014, 3, 335)]}
</code></pre>
<p>注:如果2014年和2013年是你的钥匙,那么字典在这里更合适。你知道吗</p>