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