I have a simple list of components dict to install.
components = [ {"component1": "0.1"}, {"component2": "0.2"}, {"component1": "0.3"}, {"component1": "0.2"}, {"component2": "1.0"} ]
Components may be the same, but have different versions. I want to get a list of components with latest versions. So, expecting result is
latest_components = [ {"component1": "0.3"}, {"component2": "1.0"} ]
What is the best way to compare component to each other? I tried to solve it using bash, but it looks like crap, so I want to make it more readable using python.
Advertisement
Answer
One line. Works with multilevel versions (1.2.4.7…)
{c:'.'.join(map(str,v)) for c,v in sorted([c,list(map(int, v.split('.')))] for l in components for c,v in l.items())}