On Sat, 30 Nov 2019 at 22:24, Steven D'Aprano <st...@pearwood.info> wrote:
>
> On Sat, Nov 30, 2019 at 06:16:49PM -0300, Soni L. wrote:
>
> > It'd be quite nice if dict.items() returned a namedtuple so all these
> > x[0], x[1], el[0], el[1], etc would instead be x.key, x.value, el.key,
> > el.value, etc. It would be more readable and more maintainable.
>
> If you are doing
>
>     for item in somedict.items():
>          process(item[0])
>          process(item[1])
>
> you could do this instead:
>
>     for key, value in somedict.items():
>          process(key)
>          process(value)

You can also make your own function to get the items as namedtuples.
That can work now with any class that defines items the current way.

from collections import namedtuple

Item = namedtuple('Item', ['key', 'value'])

def nameditems(d):
    return (Item(*t) for t in d.items())

d = {'a': 1, 'b': 2}

for item in nameditems(d):
    print(item.key, item.value)

Comparing that with Steve's example above though I don't see the
advantage of namedtuples here.

--
Oscar
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/OISAW6BXM2W6DIJNOZDQZ4M5VRVU6KIE/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to