如何在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