repl.it
@sidonduarte/

sort_keys

Python

Ordenando uma lista de dicionários por multiplos valores

fork
loading
Files
  • main.py
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
##
# By Sidon 2018
# Answer a STO Question
# https://pt.stackoverflow.com/q/336771/7412
##

audio_list = [{640: 640, 'lang': u'en', 'language': 'English', 'lang_code': 'en', 'bitrate': 640, 'size': 226600396}, {448: 448, 'lang': u'en', 'language': 'English', 'lang_code': 'en', 'bitrate': 448, 'size': 159037132}, {384: 384, 'lang': u'en', 'language': 'English', 'lang_code': 'en', 'bitrate': 384, 'size': 136516042}, {384: 384, 'lang': u'en', 'language': 'English', 'lang_code': 'en', 'bitrate': 384, 'size': 136516044}, {256: 256, 'lang': u'en', 'language': 'English', 'lang_code': 'en', 'bitrate': 256, 'size': 91473868}, {192: 192, 'lang': u'en', 'language': 'English', 'lang_code': 'en', 'bitrate': 192, 'size': 68952780}, {128: 128, 'lang': u'en', 'language': 'English', 'lang_code': 'en', 'bitrate': 128, 'size': 46431692}, {128: 128, 'lang': u'pt-BR', 'language': 'Brazilian', 'lang_code': 'pt-BR', 'bitrate': 128, 'size': 46431692}, {96: 96, 'lang': u'en', 'language': 'English', 'lang_code': 'en', 'bitrate': 96, 'size': 35171148}, {96: 96, 'lang': u'pt-BR', 'language': 'Brazilian', 'lang_code': 'pt-BR', 'bitrate': 96, 'size': 35171148}]

# Ordenando, considerando a primeira chave do dicionario
audio_sorted = sorted(audio_list, key=lambda k: (list(k.keys())[0], k['language'], k['bitrate']))
    
# Apresentando os 3 primeiros resultados:
print(audio_sorted[:3])

print ('=========================================================')

# Considerando somente language e bitrate
audio_sorted2 = sorted(audio_list, key=lambda k: (k['language'], k['bitrate']))
print(audio_sorted2[:3])
Fetching token
?