Преобразование словаря в список значений/кортежей

#python

Вопрос:

Я пытаюсь преобразовать словарь в список значений/кортежей. У меня есть этот код:

 list_to_sort = sorted(dictionary.items())
    lst = list(list_to_sort)
    print(lst)
 

Результат таков [('a', 9), ('b', 17), ('c', 17), ('d', 3)] . Однако я хочу переключить значения, чтобы сделать вывод таким:

 [(9, 'a'), (17, 'b'), (17, 'c'), (3, 'd')]
 

Как мне это сделать?

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

1. [ (v,k) для k,v в d.пункты() ]

Ответ №1:

 [ (v,k) for k,v in sorted(D.items()) ]
 

Ответ №2:

Ты можешь просто сделать это:

 lst = [(val,key) for key,val in lst]
 

Ответ №3:

попробуйте это:

 dict1 = {'a':9, 'b':17, 'c':17, 'd':3}
print([item[::-1] for item in sorted(dict1.items())])
 

Выход:

 [(9, 'a'), (17, 'b'), (17, 'c'), (3, 'd')]
 

Ответ №4:

Определенно, есть лучший способ сделать это, чем то, что я предлагаю, но попробуйте использовать приведенный ниже код:

 list_to_sort = sorted(dictionary.items())
lst = list( map(lambda x,y : (y,x) , list(list_to_sort)) )
 

кроме того, попробуйте сделать это и так list( map(lambda x,y : (y,x) , list_to_sort) ) . Это немного чище, но я не уверен, что это работает на 100%.

Ответ №5:

Есть вариант:

 d = {'b': 11, 'a': 14, 'd': 30, 'c': 17}
*res, = map(lambda x: (d[x], x), sorted(d))
print(res)
 

Выход:

 [(14, 'a'), (11, 'b'), (17, 'c'), (30, 'd')]