Sorting a tuple of dictons

I am new to Python and I wonder if I am doing this correctly. I have a dicts tuple (from a database call):

companies = ( { 'companyid': 1, 'companyname': 'Company C' },
              { 'companyid': 2, 'companyname': 'Company A' },
              { 'companyid': 3, 'companyname': 'Company B' } )

I want to sort this by company name. Is there a better way than doing this?

sortcompanies = list(companies)
sortcompanies.sort(lambda x,y: cmp(x['companyname'],y['companyname']))

Thanks for your criticism!

+3
source share
3 answers

You can do something like:

import operator
...
sortcompanies.sort(key=operator.itemgetter("companyname"))

I think it’s a matter of taste.

EDIT I got companyidinstead companyname. This bug has been fixed.

+7
source
>>> companies = ( { 'companyid': 1, 'companyname': 'Company C' },
              { 'companyid': 2, 'companyname': 'Company A' },
              { 'companyid': 3, 'companyname': 'Company B' } )

>>> sorted(companies, key=lambda x: x['companyname'])
[{'companyname': 'Company A', 'companyid': 2}, {'companyname': 'Company B', 'companyid': 3}, {'companyname': 'Company C', 'companyid': 1}]

as you will see when reading docs, thesorted first argument sortedcan be any iterable, so you may not even need to create a tuple.

+3
source

, :

sortcompanies.sort(key=lambda x:x['companyname'])

. , x['companyname'].

@extraneon operator.itemgetter . .

+2
source

Source: https://habr.com/ru/post/1727784/


All Articles