From: "Juliano 준호" Date: 2009-08-28T19:23:59+09:00 Subject: data sctructure Hello guys. I've just started using ruby and I come from Python... I'm still learning to think the Ruby way... Of course, any beginning is hard, but even so I've been having a lot of fun learning Ruby. The problem is that I still don't know much about the tons of methods and I'm maybe letting something pass through my fingers. My problem is this: I have to read a file and set up a data structure of embedded dictionaries. In Python I can easily do that by means of "dict.defaultdict()", but I didn't understand how to do that in Ruby... I finally came up with the following: def preprocess(lines) d = {} lines.each do |line| c, s, fc, fl = line.split("\t") if !d.has_key? c d[c] = {} end if !d[c].has_key? s d[c][s] = {} end if !d[c][s].has_key? fc d[c][s][fc] = [] end d[c][s][fc].push fl end return d end My question is: Is there an easier way to do this in Ruby as it is in Python? Same code in Python... def preprocess(lines): d = {} for line in lines: c, s, fc, fl = line dc = d.setdefault(c, {}) ds = dc.setdefault(s, {}) dfc = ds.setdefault(fc, []) lfl = dfc.append(fl) return d Thank you very much! :)