Как обновить словарь из пользовательского ввода и сортировать по значениям с помощью Python? - PullRequest
0 голосов
/ 15 октября 2018

У меня есть словарь ниже

{0: {'STATE': 'AL', 'POPULATION': '151449859682', 'TOP_CITY': '1', 'RANK': '1'}, 1: {' STATE ':' NY ',' НАСЕЛЕНИЕ ':' 8955557 ',' TOP_CITY ':' 6 ',' RANK ':' 2 '}, 2: {' STATE ':' CA ','НАСЕЛЕНИЕ': '7123215', 'TOP_CITY': '10', 'RANK': '3'}, 3: {'STATE': 'PH', 'POPULATION': '68557813', 'TOP_CITY': '11',' RANK ':' 4 '}, 4: {' STATE ':' IN ',' POPULATION ':' 7678676 ',' TOP_CITY ':' 14 ',' RANK ':' 5 '}}

Я хочу отсортировать по RANK в порядке убывания, запрашивая с пользовательского ввода

value2sort= input('Enter the value to sort')

RANK

parameter= input('asc for ascending order and desc for descending order')

desc

ожидаемый выход ниже

{4: {'STATE': 'IN', 'POPULATION': '7678676', 'TOP_CITY': '14',«RANK»: «5»}, 3: {«STATE»: «PH», «POPULATION»: «68557813», «TOP_CITY»: «11», «RANK»: «4»}, 2: {«STATE»':' CA ',' POPULATION ':' 7123215 ',' TOP_CITY ':' 10 ',' RANK ':' 3 '}, 1: {' STATE ':' NY ',' POPULATION ':' 8955557 ','TOP_CITY': '6', 'RANK': '2'}, 0: {'STATE': 'AL', 'POPULATION': '151449859682 ',' TOP_CITY ':' 1 ',' RANK ':' 1 '}}

1 Ответ

0 голосов
/ 15 октября 2018

Используя sorted с конструктором dict(), а затем передавая значения из вашего ввода в сортировку, вы можете настроить словарь, который может передавать аргументы для True/False для обработки asc/desc

value = input('Enter the value to sort: ')
param = input('Enter "asc" for ascending and "desc" for descending order: ')
order = {'asc': False, 'desc': True}

d = dict(sorted(d.items(), key=lambda x: int(x[1][value]), reverse=order[param]))
print(d)
Enter the value to sort: RANK
Enter "asc" for ascending and "desc" for descending order: desc
{4: {'STATE': 'IN', 'POPULATION': '7678676', 'TOP_CITY': '14', 'RANK': '5'}, 3: {'STATE': 'PH', 'POPULATION': '68557813', 'TOP_CITY': '11', 'RANK': '4'}, 2: {'STATE': 'CA', 'POPULATION': '7123215', 'TOP_CITY': '10', 'RANK': '3'}, 1: {'STATE': 'NY', 'POPULATION': '8955557', 'TOP_CITY': '6', 'RANK': '2'}, 0: {'STATE': 'AL', 'POPULATION': '151449859682', 'TOP_CITY': '1', 'RANK': '1'}}
...