Сортировка вложенного словаря по ключу

#python #dictionary

#python #словарь

Вопрос:

у меня есть словарь, как показано ниже :

 {' PLATINUM': [{'Name': 'MATH',
   'Description': 'You can earn up to 50 Rs per year',
   'value': 50},
  {'Name': 'SCIENCE',
   'Description': 'You can earn up to 100 Rs per year',
   'value': 100},
  {'Name': 'TOTAL',
   'Description': 'You can earn up to 200 Rs per year',
   'value': 200},
  {'Name': 'SOCIAL',
   'Description': 'You can earn up to 50 Rs per year',
   'value': 50}],
 'TITANIUM': [{'Name': 'SOCIAL',
   'Description': 'You can earn up to 20 Rs per year',
   'value': 20},
  {'Name': 'MATH',
   'Description': 'You can earn up to 10 Rs per year',
   'value': 10},
  {'Name': 'TOTAL',
   'Description': 'You can earn up to 30 Rs per year',
   'value': 30}]}
  

Я хотел, чтобы он был отсортирован на каждом уровне — ‘PLATINUM’, ‘TITANIUM’ (столько уровней) со значением ‘.
таким образом, ожидаемый словарь будет выглядеть как :

 {' PLATINUM': [
  {'Name': 'TOTAL',
   'Description': 'You can earn up to 200 Rs per year',
   'value': 200},
  {'Name': 'SCIENCE',
   'Description': 'You can earn up to 100 Rs per year',
   'value': 100},
  {'Name': 'MATH',
   'Description': 'You can earn up to 50 Rs per year',
   'value': 50},
  {'Name': 'SOCIAL',
   'Description': 'You can earn up to 50 Rs per year',
   'value': 50}],
 'TITANIUM': [ 
  {'Name': 'TOTAL',
   'Description': 'You can earn up to 30 Rs per year',
   'value': 30}
  {'Name': 'SOCIAL',
   'Description': 'You can earn up to 20 Rs per year',
   'value': 20},
  {'Name': 'MATH',
   'Description': 'You can earn up to 10 Rs per year',
   'value': 10}]}
  

Может ли кто-нибудь помочь мне достичь этого с помощью кода python?

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

1. Что вы уже пробовали?

2. я создал словарь с помощью кода из csv, но на самом деле не могу перейти к ожидаемому формату словаря?

3. Вы пробовали что-нибудь для его сортировки, или вы просто хотите, чтобы мы написали ваш код за вас? Обычно хороший вопрос содержит небольшую часть кода, над которым вы работаете, выделяя, где вы застряли, и включая любые ошибки, которые вы получаете и не можете устранить.

4. Начните читать что-то вроде этого saltycrane.com/blog/2007/09 /…

Ответ №1:

Вы могли бы использовать следующее понимание словаря, где внутренние словари находятся sorted в соответствии с ключом value :

 from operator import itemgetter 
d = {' PLATINUM': [{'Name': 'MATH', 'Description': 'You ...'}

{k:sorted(d[k], key=itemgetter('value'), reverse=True) for k in d}
  

Вывод

 {' PLATINUM': [{'Name': 'TOTAL',
   'Description': 'You can earn up to 200 Rs per year',
   'value': 200},
  {'Name': 'SCIENCE',
   'Description': 'You can earn up to 100 Rs per year',
   'value': 100},
  {'Name': 'MATH',
   'Description': 'You can earn up to 50 Rs per year',
   'value': 50},
  {'Name': 'SOCIAL',
   'Description': 'You can earn up to 50 Rs per year',
   'value': 50}],
 'TITANIUM': [{'Name': 'TOTAL',
   'Description': 'You can earn up to 30 Rs per year',
   'value': 30},
  {'Name': 'SOCIAL',
   'Description': 'You can earn up to 20 Rs per year',
   'value': 20},
  {'Name': 'MATH',
   'Description': 'You can earn up to 10 Rs per year',
   'value': 10}]}
  

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

1. Если то, что приведено ниже, является результатом вашего кода, то ответ неверен, поскольку ожидаемый результат отличается от вашего