#python #dictionary #ordereddictionary
#python #словарь #ordereddictionary
Вопрос:
Мне нужно упорядочить dict по значению в другой dict, как показано ниже
dict_filtro = {"Conector 1":{"alasca":30,"USA":10,"Brasil":20},
"Conector 4":{"alasca":60,"USA":60,"Brasil":10},
"Conector 3":{"alasca":70,"USA":15,"Brasil":24},
"Conector 2":{"alasca":10,"USA":19,"Brasil":6}}
dict_ordered = ordered_dict_by_value(dict_filtro,["alasca"])
print(dict_ordered)
>>{"Conector 2":{"alasca":**10**,"USA":19,"Brasil":6}},
"Conector 1":{"alasca":**30**,"USA":10,"Brasil":20},
"Conector 4":{"alasca":**60**,"USA":60,"Brasil":10},
"Conector 3":{"alasca":**70**,"USA":15,"Brasil":24}}
Я уже ищу много решений, но никогда не соответствую своей проблеме.
Комментарии:
1. Словарь в python не имеет порядка, которым вы можете управлять; то, как он реализован под капотом, означает, что у него его нет. docs.python.org/3/library / … имеет специальную версию словаря, если вы действительно настроены на его использование, но, как говорит Робби, это, вероятно, не лучший выбор. На вашем месте я бы попытался составить список ключей, например [«Conector 2», «Conector 1» …], а затем вы можете использовать словарь для поиска значений, связанных с этими ключами, когда они вам понадобятся.
2. словари упорядочены начиная с версии python 3.6. смотрите: softwaremaniacs.org/blog/2020/02/05/dicts-ordered
3. @bitranox В 3.6 это была всего лишь деталь реализации CPython (и не раньше 3.6). В 3.7 году это стало официальным.
Ответ №1:
Вы можете сделать это с помощью Pandas:
import pandas as pd
dict_filtro = {"Conector 1":{"alasca":30,"USA":10,"Brasil":20},
"Conector 4":{"alasca":60,"USA":60,"Brasil":10},
"Conector 3":{"alasca":70,"USA":15,"Brasil":24},
"Conector 2":{"alasca":10,"USA":19,"Brasil":6}}
df = pd.DataFrame(dict_filtro)
a = df.transpose()
b = a.sort_values(by='alasca')
c = b.transpose()
data_dict = c.to_dict()
print(data_dict)