2016-04-25 5 views
0

Как я могу сортировать list из dict s по их name значениям в соответствии с произвольным заказом? Я хочу dict s с именем 720p, чтобы прийти первым, затем dict s с именем 1080p и, наконец, dict s с именем 360p.Как я могу отсортировать список dicts произвольно определенным ключом?

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

Я не вижу никакого выхода. Вы имеете в виду «хостеров»? Является ли 'хостерами' список? По убыванию? – Chris

+0

Что вам нужно сортировать? Также вы снова создаете хостера на каждой итерации, это то, что вы хотите? – alpert

+0

Hosters - это список, и у меня есть 2 или иногда 3 записи. 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'}] 
Смежные вопросы