упорядоченный dict в другой dict

#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)