A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://mail.python.org/pipermail/python-dev/2001-June/015290.html below:

could int, str, tuple etc. become type objects?

[Python-Dev] quick poll: could int, str, tuple etc. become type objects?Fredrik Lundh fredrik@pythonware.com
Wed, 6 Jun 2001 00:57:43 +0200
greg wrote:
> > - What should the argument to dict() be?  A list of (key, value)
> >   pairs, a list of alternating keys and values, or something else?
>
> I love /F's suggestion
>
>   dict(k=v, k=v, ...)
>
> but that's icing on the cake -- cool feature, looks pretty, etc.

note that the python interpreter builds that dictionary for
you if you use the METH_KEYWORDS flag...

> I think the real answer should be
>
>   dict(k, v, k, v)
>
> like Jython.

given that Jython already gives a meaning to dict with more
than one argument, I suggest:

    dict(d) # consistency
    dict(k, v, k, v, ...) # jython compatibility
    dict(*[k, v, k, v, ...]) # convenience
    dict(k=v, k=v, ...) # common pydiom

and maybe:

    dict(d.items()) # symmetry

> If both can be supported, that would be swell.

how about:

    if (PyTuple_GET_SIZE(args)) {
        assert PyDict_GET_SIZE(kw) == 0
        if (PyTuple_GET_SIZE(args) == 1) {
            args = PyTuple_GET_ITEM(args, 0);
            if (PyDict_Check(args))
                dict = args.copy()
            else if (PySequence_Check(args))
                dict = {}
                for k, v in args:
                    dict[k] = v
        } else {
            assert (PySequence_Size(args) & 0) == 0 # maybe
            dict = {}
            for i in range(len(args)):
                dict[args[i]] = args[i+1]
        }
    } else {
        assert PyDict_GET_SIZE(kw) > 0 # probably
        dict = kw
    }





RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4