python万能排序法(可迭代对象自定义按值排序)

2019-02-27  本文已影响0人  de650ed0ad7e

对于列表中嵌套的字典的值进行排序(使用sorted和lambda)


image.png
        dp_sns = []
        for passage in passage_queryset:
            print(passage.di_id.di_device_location.lab_name)
            if passage.di_id.di_tempperature and project_obj.device_range:
                if str(int(passage.di_id.di_tempperature)) =project_obj.bt_project_id.item_name[:2] and passage.di_id.di_range.id == int(project_obj.device_range) and passage.dp_status == 0:
                    passage_dict = {}
                    passage_dict["dp_sn"] = passage.dp_sn   # 符合条件的通道sn
                    passage_dict["id"] = passage.id   # 通道id
                    passage_dict["lab_name"] = passage.di_id.di_device_location.lab_name   
                    dp_sns.append(passage_dict)

        sorted_dp_sns = sorted(dp_sns, key=lambda dp: dp['dp_sn'])

对于查询集亦可,由此可见sorted函数实现了遍历,可以直接使用遍历的对象.外键取值,此处是将要排序的值重新组合成键值对的键,按值重新自定义排序


image.png
        order_map = {'C9': 1, 'E12': 2, 'B6': 3}
        passage_queryset1 = DevicePassage.objects.all()
        passage_queryset = sorted(passage_queryset1,
                                   key= lambda x:order_map[x.di_id.di_device_location.lab_name])

[用sorted和lambda匿名函数实现多字段排序](https://blog.csdn.net/weihongrao/article/details/16877595

上一篇 下一篇

猜你喜欢

热点阅读