En Tue, 03 Jun 2008 17:18:59 -0300, Chris <[EMAIL PROTECTED]> escribió:
On Jun 3, 10:11 pm, Matthew Wilson <[EMAIL PROTECTED]> wrote:

I used defaultdict.fromkeys to make a new defaultdict instance, but I
was surprised by behavior:

    >>> b = defaultdict.fromkeys(['x', 'y'], list)

    >>> b
    defaultdict(None, {'y': <type 'list'>, 'x': <type 'list'>})

    >>> b['x']
    <type 'list'>

    >>> b['z']
    ------------------------------------------------------------
    Traceback (most recent call last):
      File "<ipython console>", line 1, in <module>
    KeyError: 'z'

I find this confusing, because now I have a defaultdict that raises a
KeyError.

To me it's intuitive for it to raise a KeyError, afterall the Key
isn't in the dictionary.

But the idea behind a defaultdict is to *not* raise a KeyError but use the default_factory to create missing values. (Unfortunately there is no way to provide a default_factory when using fromkeys).

--
Gabriel Genellina

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to