我搜索过我们可以使用排序按字母顺序按键排序字典列表,但它是按自定义顺序对其进行排序吗?
例如:
alist = [
{"id":"A","day":"sun"},
{"id":"B","day":"tue"},
{"id":"C","day":"mon"}
]
根据" day"排序alist按自定义顺序,即"sun", "mon", "tue"...."sat"
sortedalist = [
{"id":"A","day":"sun"},
{"id":"C","day":"mon"}
{"id":"B","day":"tue"}
]
我该怎么做?我认为lambda表达式需要成为sorted()的关键,但我不确定应该是什么函数
答案 0 :(得分:5)
您可以在字典中定义自定义排序顺序
sortorder={"sun":0, "mon":1, "tue":2, "wed":3, "thu":4, "fri":5, "sat":6}
然后在sort函数中使用它:
list.sort(key=lambda x: sortorder[x["day"]])
这样就可以在不返回副本的情况下对列表进行排序。
如果您需要已排序的列表副本,则可以使用
sortedlist=sorted(list, key=lambda x: sortorder[x["day"]])
请注意,调用列表list
是不好的做法,因为用此覆盖了python内部。