Sme*_*ato 2 python sorting lambda dictionary list
我已经搜索过,我们可以使用sorted按字母顺序对字典列表进行排序,但是可以按自定义顺序对其进行排序吗?
例如:
alist = [
{"id":"A","day":"sun"},
{"id":"B","day":"tue"},
{"id":"C","day":"mon"}
]
Run Code Online (Sandbox Code Playgroud)
根据“日期”以自定义顺序对列表进行排序,即 "sun", "mon", "tue"...."sat"
sortedalist = [
{"id":"A","day":"sun"},
{"id":"C","day":"mon"}
{"id":"B","day":"tue"}
]
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?我认为lambda表达式需要作为sorted()的键,但是我不确定函数应该是什么
您可以在字典中定义自定义排序顺序
sortorder={"sun":0, "mon":1, "tue":2, "wed":3, "thu":4, "fri":5, "sat":6}
Run Code Online (Sandbox Code Playgroud)
然后在sort函数中使用它:
list.sort(key=lambda x: sortorder[x["day"]])
Run Code Online (Sandbox Code Playgroud)
这样就对列表进行了排序而不返回副本。
如果您需要排序的列表的副本,则可以使用
sortedlist=sorted(list, key=lambda x: sortorder[x["day"]])
Run Code Online (Sandbox Code Playgroud)
请注意,调用列表是一种不好的做法,list因为您会以此覆盖python内部。