1. 程式人生 > >列表生成式,資料格式處理

列表生成式,資料格式處理

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)															   
															   
															   

  

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)