擅长:python、mysql、java
<p>这里有另一种方法不依赖于排序/压缩,但我不会说一种比另一种更像Python。你知道吗</p>
<pre><code>from itertools import chain
lst =[{'a':'asdasd', 'b': 123}, {'a': 'asdasdasdas'}, {'a':123,'b':'asdasd'}]
dct = {
k: max(len(str(d.get(k, ""))) for d in lst)
for k in set(chain.from_iterable(d.keys() for d in lst))
}
print(dct)
</code></pre>
<p>或者,您可以使用groupby:</p>
<pre><code>from itertools import chain, groupby
lst =[{'a':'asdasd', 'b': 123}, {'a': 'asdasdasdas'}, {'a':123,'b':'asdasd'}]
dct = {
k: max(len(str(v)) for _, v in g)
for k, g in groupby(
chain.from_iterable(d.items() for d in lst),
lambda p: p[0]
)
}
print(dct)
</code></pre>