是否有可能在朱莉娅排序字典?

tea*_*m17 14 sorting dictionary data-structures julia

我创建了一个字典使用两种阵列zip()

list1 = [1,2,3,4,5]
list2 = [6,7,8,9,19]
dictionary1 = Dict(zip(list1,list2))
Run Code Online (Sandbox Code Playgroud)

现在我想按key(list1)或通过这个词典排序list2.有人可以告诉我一个方法或功能,如何实现它?

kms*_*ire 17

(想给@ Simon的答案添加评论,但不够代表)

Sort也需要一个by关键字,这意味着你可以做到

julia> sort(collect(dictionary1), by=x->x[2])
5-element Array{Tuple{Int64,Int64},1}:
 (1,6)
 (2,7)
 (3,8)
 (4,9)
 (5,19)
Run Code Online (Sandbox Code Playgroud)

另请注意,SortedDictDataStructures.jl 中有一个维护排序顺序,并且OrderedDict维护插入顺序.最后,有一个拉取请求,允许直接排序OrderedDicts(但我需要完成并提交它).

  • 按值排序时,比我的答案更简洁、更好。 (2认同)

Sim*_*mon 6

虽然SortedDict有必要对字典进行排序可能很有用,但通常只需要对字典进行排序以进行输出,在这种情况下,可能需要以下内容:

list1 = [1,2,3,4,5]
list2 = [6,7,8,9,19]
dictionary1 = Dict(zip(list1,list2))
sort(collect(dictionary1))
Run Code Online (Sandbox Code Playgroud)

......产生:

5-element Array{(Int64,Int64),1}:
 (1,6) 
 (2,7) 
 (3,8) 
 (4,9) 
 (5,19)
Run Code Online (Sandbox Code Playgroud)

我们可以按以下值排序:

sort(collect(zip(values(dictionary1),keys(dictionary1))))
Run Code Online (Sandbox Code Playgroud)

... 这使:

5-element Array{(Int64,Int64),1}:
 (6,1) 
 (7,2) 
 (8,3) 
 (9,4) 
 (19,5)
Run Code Online (Sandbox Code Playgroud)