Сортировать python словарь на основе входного значения? - PullRequest
2 голосов
/ 29 апреля 2020

У меня есть словарь с четырьмя ключами a, b, c, d со значениями 100, 200, 300, 400

list1 = {'a':'100','b':'200','c':'300','d':'400'}

И переменная inputs.

inputs = 'c'

Если входные данные c. Словарь list1 должен быть отсортирован по нему.

inputs = 'c'
list1 = {'c':'300','a':'100','b':'200','d':'400'}

inputs = 'b'
list1 = {'b':'200','a':'100','c':'300','d':'400'}

Ответы [ 3 ]

5 голосов
/ 29 апреля 2020

In Python3 .7 + ключи dict хранятся в порядке вставки

k ='c'
d={k:list1[k]}
for key in list1:
    if key!=k:
        d[key]=list1[key]

Выход

{'c': '300', 'a': '100', 'b': '200', 'd': '400'}
3 голосов
/ 29 апреля 2020

Похоже, что вы просто хотите переставить ваш dict так, чтобы выбранное значение находилось спереди, а затем остальные клавиши:

dict1 = {'a':'100','b':'200','c':'300','d':'400'}

key = 'c'

result = {key: dict1[key], **{k: v for k, v in dict1.items() if k != key}}

print(result)
# {'c': '300', 'a': '100', 'b': '200', 'd': '400'}

** просто объединяет оставшиеся отфильтрованные ключи с key: dict1[key] .

2 голосов
/ 29 апреля 2020

Если вы просто хотите изменить положение на первое заданное значение, если оно существует, это можно сделать следующим образом:

list1 = {'a':'100','b':'200','c':'300','d':'400'}

inputs = 'c'

output = {}

if inputs in list1.keys():
    output[inputs] = list1.get(inputs)

for i in list1.keys():
    output[i] = list1[i]

Выход;

{'c': '300', 'a': '100', 'b': '200', 'd': '400'}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...