Sorting 按内部列表的特定索引对列表进行排序
我有一个类似以下内容的列表:Sorting 按内部列表的特定索引对列表进行排序,sorting,netlogo,Sorting,Netlogo,我有一个类似以下内容的列表: [["Local 7" 1 "say" "Say: Inspect Fences"] ["Local 7" 1 "do" "Do: Shepherd Cows"] ["Local 6" 1 "say" "Say: Shepherd Cows"] ["Local 6" 1 "do" "Do: Shepherd Cows"] ["Local 6" 2 "say" "Say: Shepherd Cows"] ["Local 6" 2 "do" "Do: Shepherd
[["Local 7" 1 "say" "Say: Inspect Fences"] ["Local 7" 1 "do" "Do: Shepherd Cows"] ["Local 6" 1 "say" "Say: Shepherd Cows"] ["Local 6" 1 "do" "Do: Shepherd Cows"] ["Local 6" 2 "say" "Say: Shepherd Cows"] ["Local 6" 2 "do" "Do: Shepherd Cows"] ["Local 7" 2 "say" "Say: Inspect Fences"] ["Local 7" 2 "do" "Do: Shepherd Cows"] ["Local 6" 3 "say" "Say: Shepherd Cows"] ["Local 6" 3 "do" "Do: Shepherd Cows"] ["Local 7" 3 "say" "Say: Inspect Fences"] ["Local 7" 3 "do" "Do: Inspect Fences"]]
我想按项目1
对列表进行排序。(我知道它已经在复制/粘贴版本中,但可能并不总是如此。)
sort
只返回一个空列表(我甚至不知道为什么,但我想这是一个单独的问题),而sortby
似乎不起作用,因为它需要一个解析为布尔值的报告器
有没有一个聪明的方法可以做到这一点?或者我需要先得到一个我想要排序的值列表,然后对其排序,然后在该列表上迭代,在原始列表中创建一个新的值列表,其中相应的项值匹配?编辑:用NetLogo 6语法更新 您可以非常轻松地将其转换为排序依据:
to-report sort-with [ key lst ]
report sort-by [ [a b] -> (runresult key a) < (runresult key b) ] lst
end
回答得好!谢谢你,SethStill非常有用,但我认为对于Netlogo>6,任务语法不再有效,我们需要使用[a->item 1 a]对我的列表进行
排序,并使用[key lst]报告排序方式[1?2]->(runresult key?1)<(runresult key?2)]lst end进行报告排序,谢谢nehalem!更新。
sort-with [ l -> item 1 l ] my-list