如何在Julia中按值对词典排序?

如何在Julia中按值对词典排序?,julia,Julia,我有两个阵列: a = [11,22,33,44,55] b = [66,77,88,99,100] 我曾经通过以下操作创建字典: combined_dict = Dict(zip(a, b)) 如何按值对字典进行排序 要按字典顺序对元组进行排序,只需执行以下操作: julia> sort(collect(zip(values(combined_dict), keys(combined_dict)))) 5-element Array{Tuple{Int64,Int64},1}: (

我有两个阵列:

a = [11,22,33,44,55]
b = [66,77,88,99,100]
我曾经通过以下操作创建字典:

combined_dict = Dict(zip(a, b))

如何按值对字典进行排序

要按字典顺序对元组进行排序,只需执行以下操作:

julia> sort(collect(zip(values(combined_dict), keys(combined_dict))))
5-element Array{Tuple{Int64,Int64},1}:
 (66, 11) 
 (77, 22) 
 (88, 33) 
 (99, 44) 
 (100, 55)
请参阅本帖:


内置字典类型(
Dict
)未排序,因此不清楚您要的是什么,无法排序。如果您想要一个有序字典,可以使用软件包中的
orderedict

为了按值排序,您可以使用
byvalue=true
作为关键字参数进行排序(
byvalue=false
是默认值,即按键排序):


为了对字典值进行排序,不需要使用
OrderedDict

使用
sort
函数就足以满足您的用例

julia> a = [11,22,33,44,55];

julia> b = [100,99,88,77,66];

julia> combined_dict = Dict{Int, Int}(zip(a, b))
Dict{Int64, Int64} with 5 entries:
  22 => 99
  55 => 66
  33 => 88
  11 => 100
  44 => 77

julia> sort(combined_dict, byvalue=true)
OrderedDict{Int64, Int64} with 5 entries:
  55 => 66
  44 => 77
  33 => 88
  22 => 99
  11 => 100

在Julia 1.6上测试

这实际上并不是按值排序,而是按字典顺序对元组排序。例如,尝试反转
b
,即
b=[100,99,88,77,66]
。如果您想要一个包含字典中的对的数组,只需
收集字典,然后通过
by=x->x.second
按值排序:
排序!(收集(组合指令);按=x->x.second)
julia> sort(combined_dict; byvalue=true)
OrderedDict{Int64,Int64} with 5 entries:
  55 => 66
  44 => 77
  33 => 88
  22 => 99
  11 => 100
julia> a = [11,22,33,44,55];

julia> b = [100,99,88,77,66];

julia> combined_dict = Dict{Int, Int}(zip(a, b))
Dict{Int64, Int64} with 5 entries:
  22 => 99
  55 => 66
  33 => 88
  11 => 100
  44 => 77

julia> sort(combined_dict, byvalue=true)
OrderedDict{Int64, Int64} with 5 entries:
  55 => 66
  44 => 77
  33 => 88
  22 => 99
  11 => 100