準備代碼:
class Item():
def __init__(self, _name, _index, _price):
self.name = _name
self.index = _index
self.price = _price
def items(self):
return self.name, self.index, self.price
d = {}
d["Candy"] = Item("Candy", 1, 100)
d["IceCream"] = Item("IceCream", 2, 500)
d["Snack"] = Item("Snack", 3, 300)
排序代碼:
你想要的東西,它可以通過執行以下操作來實現
print [item.items() for item in sorted(d.values(), key = lambda x:x.index)]
print [item.items() for item in sorted(d.values(), key = lambda x:x.price)]
Outpu牛逼
[('Candy', 1, 100), ('IceCream', 2, 500), ('Snack', 3, 300)]
[('Candy', 1, 100), ('Snack', 3, 300), ('IceCream', 2, 500)]
或者我們可以用attrgetter概括它像這樣
from operator import attrgetter
def sorter(d, key):
return [item.items() for item in sorted(d.values(), key = attrgetter(key))]
print sorter(d, "index")
print sorter(d, "name")
print sorter(d, "price")
輸出
[('Candy', 1, 100), ('IceCream', 2, 500), ('Snack', 3, 300)]
[('Candy', 1, 100), ('IceCream', 2, 500), ('Snack', 3, 300)]
[('Candy', 1, 100), ('Snack', 3, 300), ('IceCream', 2, 500)]
這不提供問題的答案。要批評或要求作者澄清,請在其帖子下方留言。 – Raptor
@ShivanRaptor:是的,那是我缺乏耐心。現在修復。 – 0xc0de