#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')]