Как я обмениваюсь ключами со значениями в словаре?

Я думаю, что это просто странная ошибка: я удаляю collectionViewController в SB, затем создаю новый, проблема исчезает

84
задан pppery 1 November 2019 в 01:50
поделиться

7 ответов

Python 2:

res = dict((v,k) for k,v in a.iteritems())

Python 3 (спасибо @erik):

res = dict((v,k) for k,v in a.items())
135
ответ дан 24 November 2019 в 08:23
поделиться

res = dict (zip (a.values ​​(), a.keys () ))

14
ответ дан 24 November 2019 в 08:23
поделиться

Вы можете попробовать:

d={'one':1,'two':2}
d2=dict((value,key) for key,value in d.iteritems())
d2
  {'two': 2, 'one': 1}

Остерегайтесь, что вы не можете » reverse 'словарь if

  1. Несколько ключей имеют одно и то же значение. Например {'один': 1, 'два': 1} . В новом словаре может быть только один элемент с ключом 1 .
  2. Одно или несколько значений не хэшируются. Например, {'one': [1]} . [1] - допустимое значение, но не действительный ключ.

См. эту ветку в списке рассылки python для обсуждения этой темы.

18
ответ дан 24 November 2019 в 08:23
поделиться
new_dict = dict (zip(my_dict.values(),my_dict.keys()))
53
ответ дан 24 November 2019 в 08:23
поделиться

Начиная с Python 2.7, включая 3.0+, существует, возможно, более короткая и более читаемая версия:

>>> my_dict = {'x':1, 'y':2, 'z':3}
>>> {v: k for k, v in my_dict.items()}
{1: 'x', 2: 'y', 3: 'z'}
44
ответ дан 24 November 2019 в 08:23
поделиться
In [1]: my_dict = {'x':1, 'y':2, 'z':3}

In [2]: dict((value, key) for key, value in my_dict.iteritems())
Out[2]: {1: 'x', 2: 'y', 3: 'z'}
30
ответ дан 24 November 2019 в 08:23
поделиться
new_dict = dict( (my_dict[k], k) for k in my_dict)

или даже лучше, но работает только в Python 3:

new_dict = { my_dict[k]: k for k in my_dict}
14
ответ дан 24 November 2019 в 08:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: