如何在Julia中对字典数组(Vector{Dict})按指定字段排序?
在Julia中对字典数组按指定字段排序的正确方法
要对Vector{Dict}按字典的某个字段(比如"firstName")排序,你需要给sort函数的by参数传递一个匿名函数,用来提取每个字典中用于排序的字段值。
正确示例
假设你的字典数组变量是Students,执行以下代码即可得到按firstName字母顺序排序的结果:
sorted_students = sort(Students, by = x -> x["firstName"])
运行后输出会和你期望的一致:
3-element Vector{Dict{String, Any}}: Dict("firstName" => "beth", "age" => 20) Dict("firstName" => "matt", "age" => 50) Dict("firstName" => "roger", "age" => 45)
原地排序(修改原数组)
如果不需要保留原数组,想直接修改原数组实现排序,使用sort!(带感叹号的原地版本):
sort!(Students, by = x -> x["firstName"])
为什么你的写法报错?
你之前尝试的几种写法都不符合Juliasort函数的参数要求:
sort(Students[:],by=["firstName"]):by参数需要接收一个函数,而不是数组,数组无法作为提取排序依据的逻辑。sort(Students[:],by="firstName"):字符串不是合法的函数类型,Julia无法直接通过字符串自动提取字典的键值,必须显式写出提取逻辑。sort(Students,["firstName"]):第二个位置参数是用于自定义比较逻辑的lt函数,你没有指定by关键字,导致参数不匹配报错。
内容的提问来源于stack exchange,提问作者Matt
相关产品推荐
相关产品推荐

