![]() |
Set literals
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* |
Re: Set literals
> - There is no ambiguity or backwards compatibility problem.
....at least if it wasn't for the empty set.. hmm... |
Re: Set literals
+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. |
Re: Set literals
simon@arrowtheory.com> 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 |
| All times are GMT. The time now is 05:08 AM. |
Powered by vBulletin®. Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.