本文共 16661 字,大约阅读时间需要 55 分钟。
# Ruby[1] pry(main)> months = Hash.new=> {}[2] pry(main)> months = Hash.new("month")=> {}[3] pry(main)> months[0]=> "month"[4] pry(main)> months[3]=> "month"
# Python3>>> months = {}>>> type(months)>>> months = dict()>>> months{}>>> dict_data.setdefault('key3', 'None')'None'
# Ruby[6] pry(main)> hash_data = {"key1"=>"hello", "key2"=>"world"}=> {"key1"=>"hello", "key2"=>"world"}[7] pry(main)> hash_data2 = {"key1"=>"hello", "key2"=>"world"}=> {"key1"=>"hello", "key2"=>"world"}[8] pry(main)> hash_data == hash_data2=> true[9] pry(main)> hash_data2 = {"key"=>"hello", "key2"=>"world"}=> {"key"=>"hello", "key2"=>"world"}[10] pry(main)> hash_data == hash_data2=> false
# Python3>>> dict_data = {"key1":"hello", "key2":"world"}>>> dict_data2 = {"key":"hello", "key2":"world"}>>> dict_data == dict_data2False>>> dict_data2 = {"key1":"hello", "key2":"world"}>>> dict_data == dict_data2True
# Ruby[6] pry(main)> hash_data = {"key1"=>"hello", "key2"=>"world"}[11] pry(main)> hash_data["key1"]=> "hello"
# Python3>>> dict_data{'key1': 'hello', 'key2': 'world'}>>> dict_data["key1"]'hello'
# Ruby[6] pry(main)> hash_data = {"key1"=>"hello", "key2"=>"world"}=> {"key1"=>"hello", "key2"=>"world"}[12] pry(main)> hash_data["key1"] = "world"=> "world"[13] pry(main)> hash_data=> {"key1"=>"world", "key2"=>"world"}
# Python3>>> dict_data = {"key1":"hello", "key2":"world"}>>> dict_data["key1"] = "world">>> dict_data{'key1': 'world', 'key2': 'world'}
# Ruby[6] pry(main)> hash_data = {"key1"=>"hello", "key2"=>"world"}=> {"key1"=>"hello", "key2"=>"world"}[14] pry(main)> hash_data.clear=> {}[15] pry(main)> hash_data=> {}
# Python3>>> dict_data = {"key1":"hello", "key2":"world"}>>> dict_data.clear()>>> dict_data{}
# Ruby[6] pry(main)> hash_data = {"key1"=>"hello", "key2"=>"world"}=> {"key1"=>"hello", "key2"=>"world"}[23] pry(main)> hash_data["key3"]=> nil[24] pry(main)> hash_data.default = "hello world"=> "hello world"[25] pry(main)> hash_data["key3"]=> "hello world"
# Python3>>> dict_data = {"key1":"hello", "key2":"world"}>>> dict_data["key3"]Traceback (most recent call last): File "", line 1, in KeyError: 'key3'>>> from collections import defaultdict>>> dict_data = defaultdict(str)>>> dict_data["key3"]''
通过 key 从 hash 中删除键值对。如果使用了块且未找到匹配的键值对,则返回块的结果。
# Ruby[6] pry(main)> hash_data = {"key1"=>"hello", "key2"=>"world"}=> {"key1"=>"hello", "key2"=>"world"}[29] pry(main)> hash_data.delete "key1"=> "hello"[30] pry(main)> hash_data=> {"key2"=>"world"}[39] pry(main)> hash_data.delete("key3"){|key| puts "No key3 to delete"}No key3 to delete=> nil
# Python3>>> dict_data = {"key1":"hello", "key2":"world"}>>> del dict_data["key1"]>>> dict_data{'key2': 'world'}
block 为 true 的每个块,从 hash 中删除键值对。
# Ruby[6] pry(main)> hash_data = {"key1"=>"hello", "key2"=>"world"}=> {"key1"=>"hello", "key2"=>"world"}[41] pry(main)> hash_data.delete_if{|key, value| key=="key1"}=> {"key2"=>"world"}[42] pry(main)> hash_data=> {"key2"=>"world"}
# Python3>>> dict_data = {"key1":"hello", "key2":"world"}>>> [dict_data.pop(key) for (key, value) in dict_data.items() if key=='key1']Traceback (most recent call last): File "", line 1, in File " ", line 1, in RuntimeError: dictionary changed size during iteration>>> dict_data{'key2': 'world'}
# Ruby[6] pry(main)> hash_data = {"key1"=>"hello", "key2"=>"world"}=> {"key1"=>"hello", "key2"=>"world"}[47] pry(main)> hash_data.each{|key, value| puts key + "=>" + value}key1=>hellokey2=>world=> {"key1"=>"hello", "key2"=>"world"}
# Python3>>> dict_data = {"key1":"hello", "key2":"world"}>>> [print(key + "=>" + value) for (key, value) in dict_data.items()]key1=>hellokey2=>world[None, None]>>> [print(key + "=>" + dict_data[key]) for key in dict_data.keys()]key1=>hellokey2=>world[None, None]
# Ruby[6] pry(main)> hash_data = {"key1"=>"hello", "key2"=>"world"}=> {"key1"=>"hello", "key2"=>"world"}[9] pry(main)> hash_data.each_with_index{|(key, value), index| puts index.to_s + key + "=>" + value}0key1=>hello1key2=>world=> {"key1"=>"hello", "key2"=>"world"}
# Python3>>> dict_data = {"key1":"hello", "key2":"world"}>>> [print(key + "=>" + value) for (key, value) in dict_data.items()]key1=>hellokey2=>world[None, None]>>> [print(key + "=>" + dict_data[key]) for key in dict_data.keys()]key1=>hellokey2=>world[None, None]
# Ruby[6] pry(main)> hash_data = {"key1"=>"hello", "key2"=>"world"}=> {"key1"=>"hello", "key2"=>"world"}=> {"key1"=>"hello", "key2"=>"world"}[48] pry(main)> hash_data.each_key{|key| puts key}key1key2=> {"key1"=>"hello", "key2"=>"world"}[54] pry(main)> hash_data.each_key{|key| puts key + "=>" + hash_data[key]}key1=>hellokey2=>world=> {"key1"=>"hello", "key2"=>"world"}
# Python3>>> dict_data = {"key1":"hello", "key2":"world"}>>> [print(key) for key in dict_data.keys()]key1key2[None, None]
# Ruby[6] pry(main)> hash_data = {"key1"=>"hello", "key2"=>"world"}=> {"key1"=>"hello", "key2"=>"world"}[55] pry(main)> hash_data.each_value{|value| puts value}helloworld=> {"key1"=>"hello", "key2"=>"world"}
# Python3>>> dict_data = {"key1":"hello", "key2":"world"}>>> [print(value) for value in dict_data.values()]helloworld[None, None]
# Ruby[6] pry(main)> hash_data = {"key1"=>"hello", "key2"=>"world"}=> {"key1"=>"hello", "key2"=>"world"}[57] pry(main)> hash_data.empty?=> false[58] pry(main)> {}.empty?=> true
# Python3>>> dict_data = {"key1":"hello", "key2":"world"}>>> len(dict_data) == 0False>>> len({}) == 0True
# Ruby[6] pry(main)> hash_data = {"key1"=>"hello", "key2"=>"world"}=> {"key1"=>"hello", "key2"=>"world"}[59] pry(main)> hash_data.fetch("key1")=> "hello"[60] pry(main)> hash_data.fetch("key3")KeyError: key not found: "key3"from (pry):60:in "fetch"[65] pry(main)> hash_data.fetch("key1", "No key1 to fetch")=> "hello"[66] pry(main)> hash_data.fetch("key3", "No key3 to fetch")=> "No key3 to fetch"[67] pry(main)> hash_data.fetch("key3"){|key| puts "No key3 to fetch"}No key3 to fetch=> nil
# Python3>>> dict_data = {"key1":"hello", "key2":"world"}>>> dict_data["key1"]'hello'>>> dict_data["key3"]Traceback (most recent call last): File "", line 1, in KeyError: 'key3'
# Ruby[6] pry(main)> hash_data = {"key1"=>"hello", "key2"=>"world"}=> {"key1"=>"hello", "key2"=>"world"}[69] pry(main)> hash_data.has_key?"key1"=> true[70] pry(main)> hash_data.has_key?"key3"=> false[71] pry(main)> hash_data.key?"key1"=> true[72] pry(main)> hash_data.key?"key3"=> false
# Python3>>> dict_data = {"key1":"hello", "key2":"world"}>>> "key1" in dict_dataTrue>>> "key3" in dict_dataFalse
# Ruby[6] pry(main)> hash_data = {"key1"=>"hello", "key2"=>"world"}=> {"key1"=>"hello", "key2"=>"world"}[73] pry(main)> hash_data.include?"key1"=> true[74] pry(main)> hash_data.include?"key3"=> false[75] pry(main)> hash_data.member?"key1"=> true[76] pry(main)> hash_data.member?"key3"=> false
# Python3>>> dict_data = {"key1":"hello", "key2":"world"}>>> "key1" in dict_dataTrue>>> "key3" in dict_dataFalse
# Ruby[6] pry(main)> hash_data = {"key1"=>"hello", "key2"=>"world"}=> {"key1"=>"hello", "key2"=>"world"}[77] pry(main)> hash_data.has_value?"hello"=> true[78] pry(main)> hash_data.has_value?"olleh"=> false[159] pry(main)> hash_data.value?"hello"=> true
# Python3>>> dict_data = {"key1":"hello", "key2":"world"}>>> "hello" in dict_data.values()True>>> "olleh" in dict_data.values()False
# Ruby[6] pry(main)> hash_data = {"key1"=>"hello", "key2"=>"world"}=> {"key1"=>"hello", "key2"=>"world"}[81] pry(main)> hash_data.index("hello")(pry):81: warning: Hash#index is deprecated; use Hash#key=> "key1"[82] pry(main)> hash_data.index("value1")(pry):82: warning: Hash#index is deprecated; use Hash#key=> nil
# Python3>>> dict_data = {"key1":"hello", "key2":"world"}>>> [print(key) for (key, value) in dict_data.items() if value=="hello"]key1[None]
# Ruby[6] pry(main)> hash_data = {"key1"=>"hello", "key2"=>"world"}=> {"key1"=>"hello", "key2"=>"world"}[87] pry(main)> hash_data.invert=> {"hello"=>"key1", "world"=>"key2"}
# Python3>>> dict_data = {"key1":"hello", "key2":"world"}>>> dict([(value, key) for (key, value) in dict_data.items()]){'hello': 'key1', 'world': 'key2'}
# Ruby[4] pry(main)> hash_data = {"key1"=>"hello", "key2"=>"world"}=> {"key1"=>"hello", "key2"=>"world"}[7] pry(main)> hash_data.key? 'key1'=> true[8] pry(main)> hash_data.key? 'key3'=> false
# Ruby[6] pry(main)> hash_data = {"key1"=>"hello", "key2"=>"world"}=> {"key1"=>"hello", "key2"=>"world"}[88] pry(main)> hash_data.keys=> ["key1", "key2"]
# Python3>>> dict_data = {"key1":"hello", "key2":"world"}>>> dict_data.keys()dict_keys(['key1', 'key2'])
# Ruby[11] pry(main)> hash_data = {"key1"=>"hello", "key2"=>"world"}=> {"key1"=>"hello", "key2"=>"world"}[12] pry(main)> hash_data.value?'hello'=> true[13] pry(main)> hash_data.value?'hell'=> false
# Ruby[6] pry(main)> hash_data = {"key1"=>"hello", "key2"=>"world"}=> {"key1"=>"hello", "key2"=>"world"}[89] pry(main)> hash_data.values=> ["hello", "world"]
# Python3>>> dict_data = {"key1":"hello", "key2":"world"}>>> dict_data.values()dict_values(['hello', 'world'])
# Ruby[6] pry(main)> hash_data = {"key1"=>"hello", "key2"=>"world"}=> {"key1"=>"hello", "key2"=>"world"}[90] pry(main)> hash_data.length=> 2[125] pry(main)> hash_data.size=> 2
# Python3>>> dict_data = {"key1":"hello", "key2":"world"}>>> len(dict_data)2
包含 hash 和 other_hash 的内容,重写 hash 中与 other_hash 带有重复键的键值对。
# Ruby[6] pry(main)> hash_data = {"key1"=>"hello", "key2"=>"world"}=> {"key1"=>"hello", "key2"=>"world"}[93] pry(main)> hash_data2 = {"key2"=>"hello", "key3"=>"world"}=> {"key2"=>"hello", "key3"=>"world"}[95] pry(main)> hash_data.merge hash_data2=> {"key1"=>"hello", "key2"=>"hello", "key3"=>"world"}[96] pry(main)> hash_data=> {"key1"=>"hello", "key2"=>"world"}[108] pry(main)> hash_data.merge! hash_data2=> {"key1"=>"hello", "key2"=>"hello", "key3"=>"world"}[109] pry(main)> hash_data=> {"key1"=>"hello", "key2"=>"hello", "key3"=>"world"}
# Python3>>> dict_data = {"key1":"hello", "key2":"world"}>>> dict_data{'key1': 'hello', 'key2': 'world'}>>> dict_data2{'key2': 'hello', 'key3': 'world'}>>> dict_data.update(dict_data2)>>> dict_data{'key1': 'hello', 'key2': 'hello', 'key3': 'world'}
包含 hash 和 other_hash 的内容,可选择重写 hash 中与 other_hash 带有重复键的键值对。
# Ruby[6] pry(main)> hash_data = {"key1"=>"hello", "key2"=>"world"}[103] pry(main)> hash_data=> {"key1"=>"hello", "key2"=>"world"}[104] pry(main)> hash_data2=> {"key2"=>"hello", "key3"=>"world"}# 相同 key 保留新的 value (覆盖)[102] pry(main)> hash_data.merge(hash_data2){|key, oldval, newval| newval}=> {"key1"=>"hello", "key2"=>"hello", "key3"=>"world"}# 相同 key 保留旧的 value (不覆盖)[105] pry(main)> hash_data.merge(hash_data2){|key, oldval, newval| oldval}=> {"key1"=>"hello", "key2"=>"world", "key3"=>"world"}
# Python3>>> dict_data = {"key1":"hello", "key2":"world"}>>> dict_data{'key1': 'hello', 'key2': 'world'}>>> dict_data2{'key2': 'hello', 'key3': 'world'}>>> dict_data.update(dict_data2)>>> dict_data{'key1': 'hello', 'key2': 'hello', 'key3': 'world'}
# Ruby[6] pry(main)> hash_data = {"key1"=>"hello", "key2"=>"world"}=> {"key1"=>"hello", "key2"=>"world"}[110] pry(main)> hash_data.rehash=> {"key1"=>"hello", "key2"=>"hello", "key3"=>"world"}
# Ruby[6] pry(main)> hash_data = {"key1"=>"hello", "key2"=>"world"}=> {"key1"=>"hello", "key2"=>"world"}[115] pry(main)> hash_data.reject{|key, value| key=='key1'}=> {"key2"=>"world"}[116] pry(main)> hash_data=> {"key1"=>"hello", "key2"=>"world"}[117] pry(main)> hash_data.reject!{|key, value| key=='key1'}=> {"key2"=>"world"}[118] pry(main)> hash_data=> {"key2"=>"world"}
# Python3>>> dict_data = {"key1":"hello", "key2":"world"}>>> [dict_data.pop(key) for (key, value) in dict_data.items() if key=="key1"]Traceback (most recent call last): File "", line 1, in File " ", line 1, in RuntimeError: dictionary changed size during iteration>>> dict_data{'key2': 'world'}
# Ruby[6] pry(main)> hash_data = {"key1"=>"hello", "key2"=>"world"}=> {"key1"=>"hello", "key2"=>"world"}[121] pry(main)> hash_data2=> {"key2"=>"hello", "key3"=>"world"}[122] pry(main)> hash_data.replace(hash_data2)=> {"key2"=>"hello", "key3"=>"world"}[123] pry(main)> hash_data=> {"key2"=>"hello", "key3"=>"world"}
# Python3>>> dict_data = {"key1":"hello", "key2":"world"}>>> dict_data2{'key2': 'hello', 'key3': 'world'}>>> dict_data = dict_data2.copy()>>> dict_data{'key2': 'hello', 'key3': 'world'}
# Ruby[6] pry(main)> hash_data = {"key1"=>"hello", "key2"=>"world"}=> {"key1"=>"hello", "key2"=>"world"}[127] pry(main)> hash_data.select{|key, value| key=="key1"}=> {"key1"=>"hello"}[128] pry(main)> hash_data=> {"key1"=>"hello", "key2"=>"world"}[129] pry(main)> hash_data.select!{|key, value| key=="key1"}=> {"key1"=>"hello"}[130] pry(main)> hash_data=> {"key1"=>"hello"}
# Python3>>> dict_data = {"key1":"hello", "key2":"world"}
# Ruby[6] pry(main)> hash_data = {"key1"=>"hello", "key2"=>"world"}=> {"key1"=>"hello", "key2"=>"world"}[133] pry(main)> hash_data.shift=> ["key1", "hello"][134] pry(main)> hash_data=> {"key2"=>"world"}
# Python3>>> dict_data = {"key1":"hello", "key2":"world"}>>> dict_data.pop("key1")'hello'>>> dict_data{'key2': 'world'}
# Ruby[6] pry(main)> hash_data = {"key1"=>"hello", "key2"=>"world"}=> {"key1"=>"hello", "key2"=>"world"}[138] pry(main)> hash_data.sort=> [["key1", "hello"], ["key2", "world"]]
# Python3>>> dict_data = {"key1":"hello", "key2":"world"}>>> sorted(list(dict_data.items()))[('key1', 'hello'), ('key2', 'world')]
# Ruby[6] pry(main)> hash_data = {"key1"=>"hello", "key2"=>"world"}=> {"key1"=>"hello", "key2"=>"world"}[144] pry(main)> hash_data.store('key3', 'hello3')=> "hello3"[145] pry(main)> hash_data=> {"key1"=>"hello", "key2"=>"world", "key3"=>"hello3"}
# Python3>>> dict_data = {"key1":"hello", "key2":"world"}>>> dict_data['key3'] = "hello3">>> dict_data{'key1': 'hello', 'key2': 'world', 'key3': 'hello3'}
# Ruby[6] pry(main)> hash_data = {"key1"=>"hello", "key2"=>"world"}=> {"key1"=>"hello", "key2"=>"world"}[147] pry(main)> hash_data.to_a=> [["key1", "hello"], ["key2", "world"]]
# Python3>>> dict_data = {"key1":"hello", "key2":"world"}>>> list(dict_data.items())[('key1', 'hello'), ('key2', 'world')]
# Ruby[6] pry(main)> hash_data = {"key1"=>"hello", "key2"=>"world"}=> {"key1"=>"hello", "key2"=>"world"}[149] pry(main)> hash_data.to_s=> "{\"key1\"=>\"hello\", \"key2\"=>\"world\"}"
# Python3>>> dict_data = {"key1":"hello", "key2":"world"}>>> str(dict_data)"{'key1': 'hello', 'key2': 'world'}"
# Ruby[6] pry(main)> hash_data = {"key1"=>"hello", "key2"=>"world"}=> {"key1"=>"hello", "key2"=>"world"}[152] pry(main)> hash_data.update(hash_data2)=> {"key1"=>"hello", "key2"=>"hello", "key3"=>"world"}[155] pry(main)> hash_data.update(hash_data2){|key, oldval, newval| oldval}=> {"key1"=>"hello", "key2"=>"world", "key3"=>"world"}
# Python3>>> dict_data = {"key1":"hello", "key2":"world"}>>> dict_data{'key1': 'hello', 'key2': 'world'}>>> dict_data2{'key2': 'hello', 'key3': 'world'}>>> dict_data.update(dict_data2)>>> dict_data{'key1': 'hello', 'key2': 'hello', 'key3': 'world'}
# Ruby[6] pry(main)> hash_data = {"key1"=>"hello", "key2"=>"world"}=> {"key1"=>"hello", "key2"=>"world"}[160] pry(main)> hash_data.values_at('key1')=> ["hello"][161] pry(main)> hash_data.values_at('key1', 'key2')=> ["hello", "world"][162] pry(main)> hash_data.values_at('key1', 'key2', 'key3')=> ["hello", "world", nil]
# Python3>>> dict_data = {"key1":"hello", "key2":"world"}>>> [value for (key, value) in dict_data.items() if key in ['key1']]['hello']>>> [value for (key, value) in dict_data.items() if key in ['key1', 'key2']]['hello', 'world']>>> [value for (key, value) in dict_data.items() if key in ['key1', 'key2', 'key3']]['hello', 'world']
转载地址:http://vcjqi.baihongyu.com/