回答另一个SO问题(那里)时出现了问题.
当我在python集上迭代几次(不在调用之间改变它)时,我可以假设它总是以相同的顺序返回元素吗?如果没有,改变订单的理由是什么?它是确定性的还是随机的?还是实现定义?
当我反复调用相同的python程序(不是随机的,不依赖于输入)时,我会得到相同的排序吗?
基本问题是,如果python set迭代顺序仅取决于用于实现集合的算法,还取决于执行上下文?
我在 Julia 的 Dictionary 集合中遇到了奇怪的行为。可以在 Julia 中像这样定义字典:
dictionary = Dict(1 => 77, 2 => 66, 3 => 1)
Run Code Online (Sandbox Code Playgroud)
您可以使用以下方法访问密钥keys:
> keys(dictionary)
# [output]
KeySet for a Dict{Int64, Int64} with 3 entries. Keys:
2
3
1
# now i want to make sure Julia consider above order. so i use collect and then i will call first element of it
> collect(keys(dictionary))[1]
# [output]
2
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,输出中的键顺序keys(dictionary)非常奇怪。似乎 Julia 不考虑输入中 (key=>value) 的顺序!即使它似乎没有按升序或降序排序。Julia 如何为keys(dictionary)输出建立索引?
预期输出:
> keys(dictionary)
# …Run Code Online (Sandbox Code Playgroud)