Sorting 有可能在朱莉娅的字典里分类吗?
我使用Sorting 有可能在朱莉娅的字典里分类吗?,sorting,dictionary,data-structures,julia,Sorting,Dictionary,Data Structures,Julia,我使用zip()like从两个数组中创建了一个字典 list1 = [1,2,3,4,5] list2 = [6,7,8,9,19] dictionary1 = Dict(zip(list1,list2)) 现在我想按键(list1)或list2对这本词典进行排序。有人能告诉我一种方法或功能,如何实现它吗?如果有必要对字典进行排序,则可能有用,但通常只需要对字典进行排序以进行输出,在这种情况下,可能需要以下内容: list1 = [1,2,3,4,5] list2 = [6,7,8,9,19]
zip()
like从两个数组中创建了一个字典
list1 = [1,2,3,4,5]
list2 = [6,7,8,9,19]
dictionary1 = Dict(zip(list1,list2))
现在我想按
键(list1)
或list2
对这本词典进行排序。有人能告诉我一种方法或功能,如何实现它吗?如果有必要对字典进行排序,则可能有用,但通常只需要对字典进行排序以进行输出,在这种情况下,可能需要以下内容:
list1 = [1,2,3,4,5]
list2 = [6,7,8,9,19]
dictionary1 = Dict(zip(list1,list2))
sort(collect(dictionary1))
。。。产生:
5-element Array{(Int64,Int64),1}:
(1,6)
(2,7)
(3,8)
(4,9)
(5,19)
我们可以使用以下值对值进行排序:
sort(collect(zip(values(dictionary1),keys(dictionary1))))
。。。其中:
5-element Array{(Int64,Int64),1}:
(6,1)
(7,2)
(8,3)
(9,4)
(19,5)
排序还采用一个
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)
还请注意,DataStructures.jl中有一个维护排序顺序的
SortedDict
,还有一个维护插入顺序的orderedict
。最后,还有一个pull请求,它允许对已排序的Dict
进行直接排序(但我需要完成并提交)。基本中的Dict未排序,但您可以使用数据结构中的SortedDict。jl软件包:非常感谢您提供的完整答案。我认为这是一种很好的方法,可以对这样的数据结构进行排序。@Simon,你知道如何修复一个错误吗?这个错误是因为zip自动将键变成了“子字符串”<代码>错误:方法错误:数组{SubString{String},1}类型的对象不可调用,请使用方括号[]对数组进行索引。在按值排序时,这是一个比我的答案更简洁、更好的答案。:竖起大拇指:请不要混淆SortedDict
和orderedict
之间的区别!