En un OrderedDict cómo ordenar por un atributo particular?

Estoy intentando ordenar el siguiente OrderedDict haciendo lo siguiente ->

>>> from collections import OrderedDict >>> d = OrderedDict([(4995L, [{'isbn_13': u'9788131805923', 'book_quantity': 49L, 'seller_book_id': 4995L, 'book_id': 4995L, 'title': u'Industrial Automation and Robotics', 'selling_price': 292.0, 'id': 4995L, 'condition': 'New Book'}]), (6657L, [{'isbn_13': u'9788122425925', 'book_quantity': 49L, 'seller_book_id': 6657L, 'book_id': 6657L, 'title': u'A Textbook of Agricultural Statistics', 'selling_price': 243.0, 'id': 6657L, 'condition': 'New Book'}]), (6137L, [{'isbn_13': u'9788122425727\n', 'book_quantity': 50L, 'seller_book_id': 6137L, 'book_id': 6137L, 'title': u'A Guide to Corporate Governance', 'selling_price': 247.0, 'id': 6137L, 'condition': 'New Book'}]), (6260L, [{'isbn_13': u'9788122414394\n', 'book_quantity': 50L, 'seller_book_id': 6260L, 'book_id': 6260L, 'title': u'Management Accounting \n', 'selling_price': 269.0, 'id': 6260L, 'condition': 'New Book'}])]) >>> OrderedDict(sorted(d.items(), key=lambda item: item[1][0]['selling_price'])) 

por el atributo selling_price . Pero no estoy pudiendo hacerlo.

Intenté aplicar el concepto descrito en este documento Cómo ordenar OrderedDict of OrderedDict – Python para OrderedDict normal pero no funcionó. ¿Puede alguien ayudarme?

Solución

Esto debería funcionar para el diccionario ordenado d :

 OrderedDict(sorted(d.items(), key=lambda item: item[1][0]['selling_price'])) 

Solicitud

 >>> d OrderedDict([(7484, [{'book_id': 7484, 'book_quantity': 43, 'condition': 'New Book', 'id': 7484, 'isbn_13': '9788131727591', 'seller_book_id': 7484, 'selling_price': 629.0, 'title': 'Network Management: Principles and Practice, 2/e'}]), (7485, [{'book_id': 7484, 'book_quantity': 43, 'condition': 'New Book', 'id': 7484, 'isbn_13': '9788131727591', 'seller_book_id': 7484, 'selling_price': 29.0, 'title': 'Network Management: Principles and Practice, 2/e'}])]) >>> OrderedDict(sorted(d.items(), key=lambda item: item[1][0]['selling_price'])) OrderedDict([(7485, [{'book_id': 7484, 'book_quantity': 43, 'condition': 'New Book', 'id': 7484, 'isbn_13': '9788131727591', 'seller_book_id': 7484, 'selling_price': 29.0, 'title': 'Network Management: Principles and Practice, 2/e'}]), (7484, [{'book_id': 7484, 'book_quantity': 43, 'condition': 'New Book', 'id': 7484, 'isbn_13': '9788131727591', 'seller_book_id': 7484, 'selling_price': 629.0, 'title': 'Network Management: Principles and Practice, 2/e'}])]) 

Ordenado por 'selling_price': 29.0 es menor que 'selling_price': 629.0 .