Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #29873 > unrolled thread

Java singletonMap in Python

Started byMark Lawrence <breamoreboy@yahoo.co.uk>
First post2012-09-24 00:14 +0100
Last post2012-09-25 00:38 -0400
Articles 7 — 6 participants

Back to article view | Back to comp.lang.python


Contents

  Java singletonMap in Python Mark Lawrence <breamoreboy@yahoo.co.uk> - 2012-09-24 00:14 +0100
    Re: Java singletonMap in Python Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2012-09-24 02:20 +0000
      Re: Java singletonMap in Python Duncan Booth <duncan.booth@invalid.invalid> - 2012-09-24 17:33 +0000
        Re: Java singletonMap in Python 88888 Dihedral <dihedral88888@googlemail.com> - 2012-09-24 12:03 -0700
        Re: Java singletonMap in Python Mark Lawrence <breamoreboy@yahoo.co.uk> - 2012-09-24 20:28 +0100
        Re: Java singletonMap in Python Dennis Lee Bieber <wlfraed@ix.netcom.com> - 2012-09-25 00:29 -0400
        Re: Java singletonMap in Python Dwight Hutto <dwightdhutto@gmail.com> - 2012-09-25 00:38 -0400

#29873 — Java singletonMap in Python

FromMark Lawrence <breamoreboy@yahoo.co.uk>
Date2012-09-24 00:14 +0100
SubjectJava singletonMap in Python
Message-ID<mailman.1165.1348442059.27098.python-list@python.org>
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
[2]http://stackoverflow.com/questions/31875/is-there-a-simple-elegant-way-to-define-singletons-in-python
[3]http://code.activestate.com/recipes/498072-implementing-an-immutable-dictionary/
[4]http://code.activestate.com/recipes/66531-singleton-we-dont-need-no-stinkin-singleton-the-bo/
-- 
Cheers.

Mark Lawrence.


[toc] | [next] | [standalone]


#29883

FromSteven D'Aprano <steve+comp.lang.python@pearwood.info>
Date2012-09-24 02:20 +0000
Message-ID<505fc372$0$1612$c3e8da3$76491128@news.astraweb.com>
In reply to#29873
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)



-- 
Steven

[toc] | [prev] | [next] | [standalone]


#29916

FromDuncan Booth <duncan.booth@invalid.invalid>
Date2012-09-24 17:33 +0000
Message-ID<XnsA0D8BCC3B9239duncanbooth@127.0.0.1>
In reply to#29883
Steven D'Aprano <steve+comp.lang.python@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

[toc] | [prev] | [next] | [standalone]


#29919

From88888 Dihedral <dihedral88888@googlemail.com>
Date2012-09-24 12:03 -0700
Message-ID<5a943617-2f38-447e-9bb4-c31166f44d0e@googlegroups.com>
In reply to#29916
Duncan Booth於 2012年9月25日星期二UTC+8上午1時33分31秒寫道:
> Steven D'Aprano <steve+comp.lang.python@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.

[toc] | [prev] | [next] | [standalone]


#29921

FromMark Lawrence <breamoreboy@yahoo.co.uk>
Date2012-09-24 20:28 +0100
Message-ID<mailman.1203.1348514868.27098.python-list@python.org>
In reply to#29916
On 24/09/2012 18:33, Duncan Booth wrote:
> Steven D'Aprano <steve+comp.lang.python@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.
>

Thank goodness for that, I'd assumed that I'd missed something blatantly 
obvious.  There are two chances of something like this getting into the 
standard library, zero or none.  I think in a way that's a great pity as 
I'm sure that the Python devs would enjoy supporting the little feller 
with code such as this http://tinyurl.com/9v7d7ld :)

-- 
Cheers.

Mark Lawrence.

[toc] | [prev] | [next] | [standalone]


#30007

FromDennis Lee Bieber <wlfraed@ix.netcom.com>
Date2012-09-25 00:29 -0400
Message-ID<mailman.1268.1348547375.27098.python-list@python.org>
In reply to#29916
On Mon, 24 Sep 2012 20:28:14 +0100, Mark Lawrence
<breamoreboy@yahoo.co.uk> declaimed the following in
gmane.comp.python.general:

> 
> Thank goodness for that, I'd assumed that I'd missed something blatantly 
> obvious.  There are two chances of something like this getting into the 
> standard library, zero or none.  I think in a way that's a great pity as 
> I'm sure that the Python devs would enjoy supporting the little feller 
> with code such as this http://tinyurl.com/9v7d7ld :)

	Oh, the chance /might/ be a bit higher... On par with winning the
jackpot in one of those multi-state lotteries (because you'd have to
donate the entire jackpot to Python.org to persuade them to add a "do
nothing" package <G>)
-- 
	Wulfraed                 Dennis Lee Bieber         AF6VN
        wlfraed@ix.netcom.com    HTTP://wlfraed.home.netcom.com/

[toc] | [prev] | [next] | [standalone]


#30008

FromDwight Hutto <dwightdhutto@gmail.com>
Date2012-09-25 00:38 -0400
Message-ID<mailman.1269.1348547907.27098.python-list@python.org>
In reply to#29916
On Tue, Sep 25, 2012 at 12:29 AM, Dennis Lee Bieber
<wlfraed@ix.netcom.com> wrote:
> On Mon, 24 Sep 2012 20:28:14 +0100, Mark Lawrence
> <breamoreboy@yahoo.co.uk> declaimed the following in
> gmane.comp.python.general:
>
>>
>> Thank goodness for that, I'd assumed that I'd missed something blatantly
>> obvious.  There are two chances of something like this getting into the
>> standard library, zero or none.  I think in a way that's a great pity as
>> I'm sure that the Python devs would enjoy supporting the little feller
>> with code such as this http://tinyurl.com/9v7d7ld :)
>
>         Oh, the chance /might/ be a bit higher... On par with winning the
> jackpot in one of those multi-state lotteries (because you'd have to
> donate the entire jackpot to Python.org to persuade them to add a "do
> nothing" package <G>)

It's called
import time
time.sleep(x)

-- 
Best Regards,
David Hutto
CEO: http://www.hitwebdevelopment.com

[toc] | [prev] | [standalone]


Back to top | Article view | comp.lang.python


csiph-web