我有一个字典列表,我想要对其进行筛选。
[{"Slope": -0.562, "Count": 3},
{"Slope": -0.362, "Count": 6},
{"Slope": -0.762, "Count": 8},
{"Slope": -0.562, "Count": 12},
{"Slope": 2.5, "Count": 34},
{"Slope": 1.52, "Count": 2},
{"Slope": .56, "Count": 6}]
我的目标是获得包含两个字典的列表。一个字典具有“最高计数和正斜率”,另一个具有“最高计数和负斜率”。
我的计划是过滤所有正斜率和负斜率,然后对每个列表进行排序,接着创建一个由每个列表的第一条记录组成的新列表。
对列表进行排序对我来说不是问题,我能做到!
lines_lst.sort(key=lambda i: i['lines_count'])
但是当我尝试这样做时,过滤似乎不起作用,因为它返回一个字典。
positive_lines = next(item for item in lines_lst if item["Slope"] > 0)
有没有人能提供一种解决方案,最终得到以下结果?
[{"Slope": -0.562, "Count": 12},{"Slope": 2.5, "Count": 34}]
a,b = sorted( (i for i in data if i["Slope"] < 0), key = lambda x:x["Count"]), sorted( (i for i in data if i["Slope"] >= 0), key = lambda x:x["Count"])
或者使用filter()
函数来实现相同的功能。但是你应该在其中一个情况下包括 "Slope" == 0,否则你将会消除这些值。 - Patrick Artner