2016-04-25 39 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'}] 
相关问题