[Python-ideas] frozenset literals

Hua Lu gotoalanlu at gmail.com
Sat Feb 2 08:38:06 CET 2013


>>> import ast
>>> ast.literal_eval("{ 'key': 'val' }")
{'key': 'val'}
>>> ast.literal_eval("{ ('key',): 'val' }")
{('key',): 'val'}
>>> ast.literal_eval("{ frozenset({'key'}): 'val' }")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.3/ast.py", line 86, in literal_eval
    return _convert(node_or_string)
  File "/usr/lib/python3.3/ast.py", line 63, in _convert
    in zip(node.keys, node.values))
  File "/usr/lib/python3.3/ast.py", line 62, in <genexpr>
    return dict((_convert(k), _convert(v)) for k, v
  File "/usr/lib/python3.3/ast.py", line 85, in _convert
    raise ValueError('malformed node or string: ' + repr(node))
ValueError: malformed node or string: <_ast.Call object at 0x7f865a8c1450>



On Sat, Feb 2, 2013 at 1:34 AM, Stefan Behnel <stefan_ml at behnel.de> wrote:

> Hua Lu, 02.02.2013 07:24:
> > This is similar to another proposal:
> > http://mail.python.org/pipermail/python-3000/2008-January/011798.html
> >
> > Anyway, I was using ast.literal_eval and attempted to use
> frozenset({...})
> > as a key in a dictionary, which failed, because frozenset isn't a literal
>
> This has nothing to do with being a literal or not. The way you created
> your frozenset doesn't impact its behaviour.
>
> Could you give an example of what's not working for you? Frozensets as dict
> keys work just fine for me:
>
>   Python 3.2.3 (default, Oct 19 2012, 19:53:16)
>   [GCC 4.7.2] on linux2
>   Type "help", "copyright", "credits" or "license" for more information.
>   >>> frozenset({1,2,3})
>   frozenset({1, 2, 3})
>   >>> hash(frozenset({1,2,3}))
>   -7699079583225461316
>   >>> { frozenset({1,2,3}) : 1 }
>   {frozenset({1, 2, 3}): 1}
>
> Stefan
>
>
> _______________________________________________
> Python-ideas mailing list
> Python-ideas at python.org
> http://mail.python.org/mailman/listinfo/python-ideas
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20130202/d8f06893/attachment.html>


More information about the Python-ideas mailing list