在 OrderedDict 中如何按特定属性排序?
In an OrderedDict how to sort by a particular attribute?
我正在尝试通过执行以下操作对以下 OrderedDict 进行排序-->
>>> 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']))
通过 selling_price
属性。但是我做不到。
我尝试将此 How to sort OrderedDict of OrderedDict? 中讨论的概念应用于普通的 OrderedDict,但它没有用。有人可以帮帮我吗? TIA
解决方案
这应该适用于有序字典 d
:
OrderedDict(sorted(d.items(), key=lambda item: item[1][0]['selling_price']))
申请
>>> 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'}])])
按 'selling_price': 29.0
排序小于 'selling_price': 629.0
。
我正在尝试通过执行以下操作对以下 OrderedDict 进行排序-->
>>> 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']))
通过 selling_price
属性。但是我做不到。
我尝试将此 How to sort OrderedDict of OrderedDict? 中讨论的概念应用于普通的 OrderedDict,但它没有用。有人可以帮帮我吗? TIA
解决方案
这应该适用于有序字典 d
:
OrderedDict(sorted(d.items(), key=lambda item: item[1][0]['selling_price']))
申请
>>> 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'}])])
按 'selling_price': 29.0
排序小于 'selling_price': 629.0
。