2016-04-25 44 views
0

如何根據任意排序將我的listdict s按其name的值排序?我想要dict s的名字爲720p先來,然後dict s的名字爲1080p,最後dict s的名字爲360p如何通過特定的鍵來任意排序一系列的字典?

hosters = [] 

for entry in json.loads(aResult[1][0]): 
    if 'file' not in entry or 'label' not in entry: continue 
     sLabel = sName + ' - ' + entry['label'].encode('utf-8') 
     hoster = dict() 
     hoster['link'] = entry['file'] 
     hoster['name'] = sLabel 
     hoster['resolveable'] = True 
     hosters.append(hoster) 
+0

我沒有看到任何輸出。你的意思是'hosters'? hosters是一個列表嗎?按什麼降序? – Chris

+0

你要排序什麼?你又在每一次迭代中創建託管者,那是你想要的嗎? – alpert

+0

主持人是一個列表,我有2或有時3 entrys。 360p是第一個720p,第二個是1080p。我想要720p或1080p作爲列表中的第一個。 – Unreal

回答

0

您將需要使用自定義排序功能。像這樣的東西應該工作:

def sort_by_resolution(hoster): 
    desired_order = ['720p', '1080p', '360p'] 
    if hoster['name'] in desired_order: 
     return desired_order.index(hoster['name']) 
    else: 
     return len(desired_order) 

sorted(foo, key=sort_by_resolution) 
# [{'name': '720p'}, {'name': '1080p'}, {'name': '360p'}] 
相關問題