2010年
5月
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31

setup diary

2007|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|06|08|11|
2015|01|02|03|04|05|06|07|08|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|

2010-05-07 rubyとpythonのhashとdictionnary

_ 連想配列に関するコマンドの違い

昨日に引き続き、いわゆる連想配列に関するpythonとrubyコマンドをまとめてみた。
pythonruby
d={'a':1,'b':2}h={'a'=>1,'b'=>2}
d['a']h['a']
d.has_key('b') or 'b' in dh.has_key?('b') or h.key?('b') or h.include? or h.member?
d.keys()h.keys
d.values()h.values
d.clear()h.clear
d.copy()h.clone
d.get('c',0)h.fetch('c',0)
d.update(d1)h.update(h1)
len(d)h.size or h.length
del(d['b'])h.delete('b')
d.items()h.to_a
d.popitem()h.shift
連想配列に関しても、rubyはすべてmethodで、pythonはそうではない。こうしてまとめると、rubyのmethodでまだ知らないものがたくさんあることに気づく。例えば、rubyではdefault値を指定するときに、Hash.new(0)を使っていたが、h.default=0でできる。fetchも知らなかったが、default値をすでに指定してあれば不要な気がする。 あと、まとめるべきものとしては、まずは文字列と数かな。