如果我在Python中有一个字典,并且我遍历它一次,然后再次,那么迭代顺序是否保证保留,因为我没有插入,删除或更新字典中的任何项目?(但我可能已经做过查找).
我的代码是:
hash = { two: 2, three: 3 }
def hash_add(hash, new_key, new_value)
temp_hash = {}
temp_hash[new_key.to_sym] = new_value
temp_hash.merge!(hash)
hash = temp_hash
puts hash
end
hash_add(hash, 'one', 1)
Run Code Online (Sandbox Code Playgroud)
在方法中,puts hash返回{ :one => 1, :two => 2, :three => 3 },但是当hash1放入方法时,它在之后保持不变.这就像赋值不在函数之外.
我想我可以返回更新的哈希并在方法之外设置我想要更改的哈希:
hash = hash_add(hash, 'one', 1)
Run Code Online (Sandbox Code Playgroud)
但我只是不明白为什么我给哈希的赋值不会超出方法.
我有这个,有效:
def hash_add(hash, new_key, new_value)
temp_hash = {}
temp_hash[new_key.to_sym] = new_value
temp_hash.merge!(hash)
hash.clear
temp_hash.each do |key, value|
hash[key] = value
end
end
Run Code Online (Sandbox Code Playgroud)
这给了我调用这个方法时我想要的东西,但是像这样重建哈希似乎有点过分了.