Java singletonMap in Python

88888 Dihedral dihedral88888 at googlemail.com
Mon Sep 24 15:03:01 EDT 2012


Duncan Booth於 2012年9月25日星期二UTC+8上午1時33分31秒寫道:
> Steven D'Aprano <steve+comp.lang.python at pearwood.info> wrote:
> 
> 
> 
> > On Mon, 24 Sep 2012 00:14:23 +0100, Mark Lawrence wrote:
> 
> > 
> 
> >> Purely for fun I've been porting some code to Python and came across
> 
> >> the singletonMap[1].  I'm aware that there are loads of recipes on
> 
> >> the web for both singletons e.g.[2] and immutable dictionaries
> 
> >> e.g.[3].  I was wondering how to combine any of the recipes to
> 
> >> produce the best implementation, where to me best means cleanest and
> 
> >> hence most maintainable.  I then managed to muddy the waters for
> 
> >> myself by recalling the Alex Martelli Borg pattern[4].  Possibly or
> 
> >> even probably the latter is irrelevant, but I'm still curious to know
> 
> >> how you'd code this beast.
> 
> >> 
> 
> >> First prize for the best solution is a night out with me, no guesses
> 
> >> what the second prize is :)
> 
> >> 
> 
> >> [1]http://docs.oracle.com/javase/1.4.2/docs/api/java/util/
> 
> > Collections.html
> 
> > 
> 
> > Copied from that page:
> 
> > 
> 
> > "static Map     singletonMap(Object key, Object value) 
> 
> > Returns an immutable map, mapping only the specified key to the
> 
> > specified value."
> 
> > 
> 
> > I don't see the point of this. It takes a single key, with a single 
> 
> > value, and is immutable so you can't change it or add new keys. What's
> 
> > the point? Why bother storing the key:value pair in a data structure, 
> 
> > then look up the same data structure to get the same value every time?
> 
> > 
> 
> > # Pseudo-code
> 
> > d = singletonMap(key, calculate(key))
> 
> > # later:
> 
> > value = d[key]  # there's only one key this could be
> 
> > process(value)
> 
> > 
> 
> > 
> 
> > Why not just store the value, instead of key, value and mapping?
> 
> > 
> 
> > value = calculate(key)
> 
> > # later
> 
> > process(value)
> 
> > 
> 
> > 
> 
> > 
> 
> Google is your friend. Searching for "java singletonMap" gives this as
> 
> the second hit:
> 
> 
> 
> http://stackoverflow.com/questions/7125536/when-would-i-use-java-collections-singletonmap-method
> 
> 
> 
> The answers seem to be that it's for all those cases in Java where you have a 
> 
> method that takes a map as an argument and you want to pass in a map with a single
> 
> kep/value pair. In that case it lets you replace 3 lines of Java with 1.
> 
> 
> 
> e.g. from the comments:
> 
> "If you have a simple select statement like "select foo from bar where id = :barId" 
> 
> then you would need a parameter map with a single key-value pair, barId=123. 
> 
> That's a great place to use singletonMap()"
> 
> 
> 
> Of course in Python you just use a dict literal in that case so it's pointless.
> 
> 
> 
> -- 
> 
> Duncan Booth http://kupuguy.blogspot.com

Cheers to those who are programmers that really love  authoring in the high level one with tools to translate into other computer languages,
and also collecting  the upgrade fees from clients.





More information about the Python-list mailing list