реверсивный словарь в Python [дубликаты]

1

Возможный дубликат:
Python обратное/обратное отображение
Сменить ключи для уникальных значений в словаре в Python

Привет, я хочу понять, как изменить и сравнить значения словаря: например:

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

     dicta =  [1:2, 9:8, 4:6, 3:2, 0:7, 1:34, 9:90, 1:8, 67:43, 54:23]

Как мне изменить его так, что значения dicta выше становятся ключами и ключами становятся такими значениями:

     dictb =  [2:1, 8:9, 6:4, 2:3, 7:0, 34:1, 90:9, 8:1, 43:67, 23:54]  

Я использую помощь python 2.5 pls

Теги:

4 ответа

10
dictb = dict ( (v,k) for k, v in dicta.items() )
  • 0
    Почему я получаю TypeError: unhashable type: 'dict' при запуске этой строки? Мое изречение называется G.node и исходит из networkx пакета.
  • 1
    Я предполагаю, что по крайней мере одно из значений dicta - это словарь Python или вложенная структура данных, содержащая его. При построении dictb вы пытаетесь использовать неисчерпаемую структуру данных в качестве ключа, который не разрешен в Python.
Показать ещё 5 комментариев
1
  1. Преобразовать dict в список пар (ключ, значение) с dict.items()
  2. Реверсирование каждого элемента списка с помощью reverse() и map(): map(reversed,... )
  3. Преобразовать список пар (ключ, значение) в словарь: dict(... )

    >>> d = {'a': 1, 'b': 2}
    >>> dict(map(reversed, d.items()))
    {1: 'a', 2: 'b'}
    
1

Синтаксис словарей следующий:

dicta = {1:2, 9:8}

Это сделает преобразование:

dictb = {}
for k in dicta:
  dictb[dicta[k]] = k
1

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

dicatb = {}
for x,k in dicta.iteritems():
    dictab[k] = x

Ещё вопросы

Сообщество Overcoder
Наверх
Меню