map = { "USA": { "Detroit": 23, "Cambridge": 5, "Cupertino": 0.5 }, "Canada": { "Waterloo": 1 }, "Switzerland": { "Geneva": 0.5 } } d = new Dict(map); d.getDict("USA").get("Detroit"); // => 23 d.getDict("China", {}).get("Beijing", 0); // => 0 d.getDict("USA").keys() // => ["Detroit", "Cambridge", "Cupertino"] d.getDict("USA").set("Cambridge", 6); d.getDict("USA").get("Cambridge"); // => 6 map.USA.Cambridge; // => 6