#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. Если то, что приведено ниже, является результатом вашего кода, то ответ неверен, поскольку ожидаемый результат отличается от вашего