【发布时间】:2019-05-07 22:37:41
【问题描述】:
我正在尝试实施遗传算法来优化路径。为此,我需要对列表进行排序。
基本列表 (list_cities) 如下所示:
[[{'city': 'Pau', 'lan': 43.293295, 'lng': -0.36357}, {'city': 'Marseille', 'lan': 43.293551, 'lng': 5.377397}, {'distance': 5572.500801706894}], [{'city': 'Nice', 'lan': 43.70168, 'lng': 7.260711}, {'city': 'Lyon', 'lan': 45.759132, 'lng': 4.834604}, {'distance': 6306.2650380290725}]]
如您所见,我有一个全局列表,其中包含多个列表(200 个),其中包含城市本身和距离(表示按列表顺序链接所有城市的总距离。 我想按距离的最后一个值对我的 200 个城市列表进行排序。 我尝试了很多方法,但都没有成功。
我的最后一次尝试:
sort_list = sorted(list_cities, key=lambda k: k['distance'])
这给了我以下结果:
TypeError: 列表索引必须是整数或切片,而不是 str
【问题讨论】:
-
看起来您的列表列表不是字典列表,请尝试制作字典列表并执行您已经做过的操作。
-
有没有办法按照我想要的方式排序?
-
嗯,也许有一些额外的步骤,我会为你写一个解决方案。
-
如果距离对象总是你列表中的最后一个,你可以试试
k[-1]["distance"] -
确实,它总是我列表中的最后一个@tevemadar,您的解决方案似乎有效:) 无论如何,我想知道,这是一种像这样工作的好方法吗?!在第一次构建列表时,我是否需要考虑为其他人更改此列表的结构。最初的城市来自一个 json 文件,但也许我第一次构建的列表很糟糕?!
标签: python list sorting dictionary