Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > Set literals

Reply
Thread Tools

Set literals

 
 
George Sakkis
Guest
Posts: n/a
 
      03-21-2005
How about overloading curly braces for set literals, as in

>>> aSet = {1,2,3}


- It is the standard mathematic set notation.
- There is no ambiguity or backwards compatibility problem.
- Sets and dicts are in many respects similar data structures, so why not share the same delimiter ?

*ducks*


 
Reply With Quote
 
 
 
 
George Sakkis
Guest
Posts: n/a
 
      03-21-2005
> - There is no ambiguity or backwards compatibility problem.

....at least if it wasn't for the empty set.. hmm...


 
Reply With Quote
 
 
 
 
simon@arrowtheory.com
Guest
Posts: n/a
 
      03-22-2005
+1 from me.

The other possible meaning for {1,2,3} would be {1:None,2:None,3:None},
but that is usually meant to be a set anyway (done with a dict).

So what is this: {1:2, 3, 4 } (apart from "nearly useless") ?

hmmm, thinking a bit more about this, it seems
you can build a set from a dict's keys, but not the other
way around. Is this odd, or what ?

>>> a = set({1:0,2:0,3:0})
>>> a

set([1, 2, 3])
>>>
>>> dict(a)

Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: cannot convert dictionary update sequence element #0 to a
sequence

Simon.

 
Reply With Quote
 
George Sakkis
Guest
Posts: n/a
 
      03-22-2005
http://www.velocityreviews.com/forums/(E-Mail Removed)> wrote:

> +1 from me.
>
> The other possible meaning for {1,2,3} would be {1:None,2:None,3:None},
> but that is usually meant to be a set anyway (done with a dict).
>
> So what is this: {1:2, 3, 4 } (apart from "nearly useless") ?


Syntax error; you'll have to decide whether you want a set or a dict.

> hmmm, thinking a bit more about this, it seems
> you can build a set from a dict's keys, but not the other
> way around. Is this odd, or what ?
>
> >>> a = set({1:0,2:0,3:0})
> >>> a

> set([1, 2, 3])
> >>>
> >>> dict(a)

> Traceback (most recent call last):
> File "<stdin>", line 1, in ?
> TypeError: cannot convert dictionary update sequence element #0 to a
> sequence
>
> Simon.


Nothing odd here. The set constructor takes an iterable, and dict.__iter__ iterates through the
dict's keys, so the set a in your example doesn't know anything about the dict's values. You can go
back and forth a set and a dict if you store the dict's items instead:
>>> a = set({1:0,2:0,3:0}.iteritems())
>>> a

set([(1,0), (2,0), (3,0)])
>>> dict(a)

{1:0, 2:0, 3:0}

Regards,
George


 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Python 2.7 parser bug on syntax for set literals ? Steve Howe Python 0 10-24-2010 04:40 AM
Java: byte literals and short literals John Goche Java 8 01-17-2006 11:12 PM
RE: Set literals Delaney, Timothy C (Timothy) Python 1 03-22-2005 12:02 AM
Visibility of enumeration literals under use clauses biau@altavista.com VHDL 15 02-01-2005 04:19 AM
literals Al Wilkerson ASP .Net 2 09-25-2004 05:24 AM



Advertisments