Как сказал @johrsharpe в комментарии - словарь не должен поддерживать порядок (но, вероятно, они будут поддерживаться в новейшем Python).
Вы можете создать список с парами (num_of_unique_ips , country)
, а затем легкоотсортировать и сохранить в порядке.
logins_by_country = {
"Chile": {
"num_of_unique_ips": 1,
"num_of_unique_asns": 1,
"asns": {
"AS16629 CTC. CORP S.A. (TELEFONICA EMPRESAS)": 1
}
},
"China": {
"num_of_unique_ips": 1,
"num_of_unique_asns": 1,
"asns": {
"AS4808 China Unicom Beijing Province Network": 1
}
}, # thi
}
data = [(val["num_of_unique_ips"], key) for key, val in logins_by_country.items()]
order = sorted(data)
print(order)
Результат.Сортирует по num_of_unique_ips
и country
(если у них есть sam num_of_unique_ips
)
[(1, 'Chile'), (1, 'China')]
, и теперь вы можете использовать его для получения данных из словаря в ожидаемом порядке.
for number, country in order:
print(logins_by_country[country])
Вы также можете использовать его для создания OrderedDict
, который будет поддерживать порядок
from collections import OrderedDict
new_dict = OrderedDict()
for number, country in order:
new_dict[country] = logins_by_country[country]
print(new_dict)