Re: Re: dictionaries?
- To: mathgroup at smc.vnet.net
- Subject: [mg20538] Re: [mg20508] Re: dictionaries?
- From: Daniel Reeves <dreeves at eecs.umich.edu>
- Date: Sat, 30 Oct 1999 00:13:55 -0400
- Sender: owner-wri-mathgroup at wolfram.com
since the topic came up, just thought I'd share this (a way to get a list of the keys for a dictionary): keys[hash_] := DownValues[hash] /. {RuleDelayed -> (ReleaseHold[#] &), hash -> (# &)} -- -- -- -- -- -- -- -- -- -- -- -- Daniel Reeves http://ai.eecs.umich.edu/people/dreeves/ "Beware of bugs in the above code; I have only proved it correct, not tried it." -- Donald Knuth ----- FROM Hans Staugaard ON 99.10.27 02:05 (Today) ----- > Joe Strout wrote: > > > > In Python, there's an extremely handy datatype called a "dictionary" > > which implements a many-to-1 mapping between keys (which can be any > > hashable type) and values (which can be anything). E.g.: > > > > > d = {"one":1, "two":2} > > > d["one"] > > 1 > > > d["three"] > > (key not found) > > > > I'm looking for something similar in Mathematica -- it's a great way to > > organize lists of parameters, without having to worry about the order > > in which they are listed. > > > > I've searched the online help and flipped through the Mathematica book, > > but I can't find anything like this. Have I missed something? > > > > Thanks, > > -- Joe > > > > -- > > ,------------------------------------------------------------------. > > | Joseph J. Strout Biocomputing -- The Salk Institute | > > | joe at strout.net http://www.strout.net | > > `------------------------------------------------------------------' > > Check out the Mac Web Directory! http://www.strout.net/macweb.cgi > > You could just say > > d["one"]=1; > d["two"]=2; > ... > > or if you have a list like this > > dl={"one",1,"two",2,"three",3} > > you could do like this > > Set[d[#1],#2]&@@@Partition[dl,2] > > If you want the function to alert you when there is no key found, you > could, in both cases, add: > > d::nokey="Key not found" > d[_]:=Message[d::nokey] > > Hope that helps > > Hans >