How to imporve D-translation of these Python list comprehensions ?

Ola Fosheim Grøstad ola.fosheim.grostad at gmail.com
Thu Feb 1 20:18:37 UTC 2018


On Monday, 15 January 2018 at 19:05:52 UTC, xenon325 wrote:
>     def aget(d, k1, k2):
>         return d.get(k1, {}).get(k2, '')
>
>     aa = ['ver', 'rev']
>     kk = set(chain(srv1.keys(), srv2.keys()))
>     dd = [dict(_name=k, **{a + str(i): aget(d, k, a) for a in 
> aa for i, d in enumerate([srv1, srv2])}) for k in sorted(kk)]

But that was really verbose, why didn't he contract everything 
into one line?

dd = [dict(_name=k, **{a + str(i): d.get(k,{}).get(a,'') for a in 
('ver','rev') for i, d in enumerate((srv1, srv2))}) for k in 
sorted(set(chain(srv1.keys(), srv2.keys())))]

:*)



More information about the Digitalmars-d-learn mailing list