dl = [
{
"viewTimes": 236,
"topTimes": 49,
"stepsNum": 76,
"collTimes": 321
},
{
"viewTimes": 236,
"topTimes": 47,
"stepsNum": 58,
"collTimes": 344
},
{
"viewTimes": 238,
"topTimes": 53,
"stepsNum": 11,
"collTimes": 321
},
{
"viewTimes": 240,
"topTimes": 31,
"stepsNum": 39,
"collTimes": 344
},
{
"viewTimes": 240,
"topTimes": 38,
"stepsNum": 13,
"collTimes": 200
}]
我想对上面的列表里面的字典进行排序,先按viewTimes降序排列,再按stepsNum进行升序排列
items = sorted(dl,key=lambda x:(-x["viewTimes"],x["stepsNum"]))
print(items)
#两行代码即可,
.通过lambda表达式对列表里面的字典进行排序
dl1 = sorted(dl, key=lambda dl : dl['viewTimes'],reverse=True)
dl2 = sorted(dl, key=lambda dl : dl['stepsNum'],reverse=False)
print(dl2)
可以的话就给个满意吧,我需要c币来提问,谢谢
这是我在pycharm运行的结果,真的很需要c币
dl1 = sorted(dl, key=lambda dl: dl['viewTimes'], reverse=True)
dl2 = []
dl_tmp = []
view_times = 0
for i, tmp in enumerate(dl1):
if tmp['viewTimes'] == view_times:
dl_tmp.append(tmp)
else:
dl2 = dl2 + sorted(dl_tmp, key=lambda dl_tmp: dl_tmp['stepsNum'], reverse=False)
view_times = tmp['viewTimes']
dl_tmp = [tmp]
if i == len(dl1) - 1:
dl2 = dl2 + sorted(dl_tmp, key=lambda dl_tmp: dl_tmp['stepsNum'], reverse=False)
for temp in dl2:
print(temp)