Python3: сортировка трехуровневого вложенного словаря по значению

#python #sorting #dictionary #lambda

#python #сортировка #словарь #лямбда

Вопрос:

Я пытался отсортировать словарь словарей словарей (3 уровня), но безуспешно. Мне нужно отсортировать его по значению поля «common_RMSD». Это пример ввода (извините, я не знаю, как правильно отформатировать словарь здесь …)

 my_dict = {'E': {
         'E': {
            'common_sup': <Bio.PDB.Superimposer.Superimposer object at 0x08451030>, 
            'common_sample_chain_ID': 'E', 
            'common_ref_chain_ID': 'E', 
            'common_RMSD': 2.013799285922141e-14}, 
          'F': {
            'common_sup': <Bio.PDB.Superimposer.Superimposer object at 0x08786FB0>, 
            'common_sample_chain_ID': 'F', 
            'common_ref_chain_ID': 'E', 
            'common_RMSD': 0.1207801497077146}}, 
         'F': {
          'E': {
            'common_sup': <Bio.PDB.Superimposer.Superimposer object at 0x08AB6410>, 
            'common_sample_chain_ID': 'E', 
            'common_ref_chain_ID': 'F', 
            'common_RMSD': 0.12078014970771417}, 
          'F': {
            'common_sup': <Bio.PDB.Superimposer.Superimposer object at 0x08AB63F0>, 
            'common_sample_chain_ID': 'F', 
            'common_ref_chain_ID': 'F', 
            'common_RMSD': 7.559143985024071e-15}
         }  }
  

В предыдущих сообщениях я читал об использовании lamdda и функций items(). С помощью items() Я могу получить первое значение первого уровня ключ-значение (который является вторым словарем), но я не знаю, как продвинуться дальше внутри словаря.

 sorted(dict.items(), key = lambda x: x[1]... )
  

Есть ли возможность изменить порядок всего словаря, отсортировав вложенные словари по значению ‘common_RMSD’? Так что, когда я перебираю их, первый словарь имеет наименьшее значение ‘common_RMSD’? Если нет, то выведите кортеж с помощью (‘common_sup’, ‘common_sample_chain_ID’, ‘common_ref_chain_ID’, ‘common_RMSD’), снова упорядоченный по ‘common_RMSD’

Комментарии:

1. Каким вы ожидаете быть результатом для вашего примера данных??

2. Словари не имеют порядка ( * ) — зачем их сортировать? ( * ) они получили порядок сортировки начиная с 3.7 … но это не приведет к повторному использованию без воссоздания всего dicts… итак, какова цель их сортировки?

3. dict затемняет имя класса

4. Мне нужно выполнить цикл по словарю, поскольку первым вложенным словарем является тот, у которого наименьшее значение ‘common_RMSD’.