擅长:python、mysql、java
<p>首先,concat不返回新的dict或修改现有的dict,所以您不会得到任何东西。在</p>
<p>其次,您需要传入特殊密钥列表。在</p>
<p>第三,你需要决定如何处理钥匙。目前concat_dict正在根据顺序覆盖它所得到的任何值。不管键是否特殊,您都希望保留非空值。在</p>
<p>下面的函数将得到您想要的,但我并不认为它是最佳的。如果需要更多的定制,可以传递另一个函数来定制如何处理特殊键。在</p>
<pre><code>def concat_dict(special_keys, *dicts):
keys = set().union(*dicts)
outdict = {}
for k in keys:
for dic in dicts:
if dic.has_key(k):
if k in special_keys:
if outdict.has_key(k) and dic[k] is not None:
outdict[k] = outdict[k] + ";" + dic[k]
else:
outdict[k] = dic[k]
else:
outdict[k] = dic.get(k)
return outdict
</code></pre>