• 列表生成式,数据格式处理


    permission_queryset = [
        {
            'permissions__id': 1,
            'permissions__title': '用户列表',
            'permissions__url': '/user/',
            'permissions__name': 'user',
            'permissions__menu_id': 1,
            'permissions__menu__title': '用户管理',
            'permissions__menu__icon': 'fs'
        }, {
            'permissions__id': 2,
            'permissions__title': '添加用户',
            'permissions__url': '/user/add/',
            'permissions__name': 'user_add',
            'permissions__menu_id': 1,
            'permissions__menu__title': '用户管理',
            'permissions__menu__icon': None
        }, {
            'permissions__id': 3,
            'permissions__title': '编辑用户',
            'permissions__url': '/user/edit/(\d+)',
            'permissions__name': 'user_edit',
            'permissions__menu_id': 2,
            'permissions__menu__title': '信息管理',
            'permissions__menu__icon': None
        }, {
            'permissions__id': 4,
            'permissions__title': '删除用户',
            'permissions__url': '/user/del/(\d+)',
            'permissions__name': 'user_del',
            'permissions__menu_id': 2,
            'permissions__menu__title': '信息管理',
            'permissions__menu__icon': None
        }, {
            'permissions__id': 5,
            'permissions__title': '删除用户',
            'permissions__url': '/user/del/(\d+)',
            'permissions__name': 'user_del',
            'permissions__menu_id': None,
            'permissions__menu__title': 'None',
            'permissions__menu__icon': None
        }
    ]
    
    # 将他变为下面格式的数据
    # 保留有permissions__menu_id的字典,permissions__menu_id最为字典的key,和菜单相关的作为字典外层数据,其他放到children列表中
    {
    	1: {
    		'title': '用户管理',
    		'icon': None,
    		'children': [{
    			'title': '用户列表',
    			'name': 'user',
    			'url': '/user/'
    		}, {
    			'title': '添加用户',
    			'name': 'user_add',
    			'url': '/user/add/'
    		}]
    	},
    	2: {
    		'title': '信息管理',
    		'icon': None,
    		'children': [{
    			'title': '编辑用户',
    			'name': 'user_edit',
    			'url': '/user/edit/(\d+)'
    		}, {
    			'title': '删除用户',
    			'name': 'user_del',
    			'url': '/user/del/(\d+)'
    		}]
    	}
    }
    
    
    # 推荐的写法
    
     for row in permission_queryset: 
            permission_dict[row['permissions__name']] = {'url': row['permissions__url']}
            if row['permissions__menu_id']:
                if row['permissions__menu_id'] not in menu_dict:	# children中是新增数据还是追加数据取决于字典相应的key是否已经存在(添加),所以根据这个依据进行判断
                    menu_dict[row['permissions__menu_id']] = {'title': row['permissions__menu__title'],
                                                              'icon': row['permissions__menu__icon'],
                                                              'children':[
                                                                  {"title": row['permissions__title'],
                                                                   "name": row['permissions__name'],
                                                                   "url": row["permissions__url"],
                                                                   }], }
                else:
                    menu_dict[row['permissions__menu_id']]['children'].append( {"title": row['permissions__title'],
                                                                   "name": row['permissions__name'],
                                                                   "url": row["permissions__url"],
                                                                   })
    
    															   
    															   
    # 我的很low的写法															   
    permission_dict = {row["permissions__menu_id"]: {"title": row["permissions__menu__title"],
                                                     "icon": row["permissions__menu__icon"],
                                                     "children": [],                                           
                                                        
                                                     } for row in permission_queryset if row["permissions__menu_id"]}
    
    for row in permission_queryset:
        if row["permissions__menu_id"]:
            print(row["permissions__id"])
            for permission_id in permission_dict:
                if row["permissions__menu_id"] == permission_id:
                    print(permission_id)
                    permission_dict[permission_id]["children"].append({"title": row["permissions__title"],
                                                                       "name": row["permissions__name"],
                                                                       "url": row["permissions__url"],
                                                                       })
    
    print(permission_dict)															   
    															   
    															   
    

      

    另一种写法

    menu_dict = defaultdict(lambda: {'children': []})
    
    for row in permission_queryset:
        if row['permissions__menu_id']:
            menu_dict[row['permissions__menu_id']].setdefault('title', row['permissions__menu__title'], )
            menu_dict[row['permissions__menu_id']].setdefault('icon', row['permissions__menu__icon'], )
            menu_dict[row['permissions__menu_id']]['children'].append({"title": row['permissions__title'],
                                                                       "name": row['permissions__name'],
                                                                       "url": row["permissions__url"],
                                                                       })
    print(dict(menu_dict))
    

      

    def quicksortshort(arr):
    	return [] if arr==[] else quicksortshort([y for y in arr[1:] if y<arr[0]]) + [arr[0]]+ quicksortshort([y for y in arr[1:] if y>=arr[0]])
    一行代码写快排
    

      

    # 简单的列表生成式
    li = [ x for x in range(10)]
    print(li)
    dic = { y:y*y for y in li }
    print(dic)
    
    
    # 列表生成式间的嵌套
    dic = { y:y*y for y in [ x for x in range(10)] }
    li = [ y*y for y in [ x for x in range(10)] ]
    print(dic)
    print(li)
    

      

  • 相关阅读:
    构建之法阅读笔记05
    四元数(Quaternion)
    httpclient
    两种unity双击事件
    WWW网络请求
    Unity混合天空盒
    unity message
    unity射线检测
    unity 初始化数据存储问题
    Awake,start,update,OnEnable,OnDisable
  • 原文地址:https://www.cnblogs.com/perfey/p/9966102.html
Copyright © 2020-2023  润新知