给定一本这样的字典:

my_map = {'a': 1, 'b': 2}

如何将此映射颠倒得到:

inv_map = {1: 'a', 2: 'b'}

当前回答

我会在python2中这样做。

inv_map = {my_map[x] : x for x in my_map}

其他回答

试试这个:

inv_map = dict(zip(my_map.values(), my_map.keys()))

(请注意,字典视图上的Python文档显式保证.keys()和.values()的元素顺序相同,这允许上述方法工作。)

另外:

inv_map = dict((my_map[k], k) for k in my_map)

或者使用python 3.0的字典推导式

inv_map = {my_map[k] : k for k in my_map}

假设字典中的值是唯一的:

Python 3:

dict((v, k) for k, v in my_map.items())

Python 2:

dict((v, k) for k, v in my_map.iteritems())
def invertDictionary(d):
    myDict = {}
  for i in d:
     value = d.get(i)
     myDict.setdefault(value,[]).append(i)   
 return myDict
 print invertDictionary({'a':1, 'b':2, 'c':3 , 'd' : 1})

这将提供输出为:{1:(' a ', ' d '), 2: [b], 3: [' c ']}

另一种更实用的方法是:

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

我会在python2中这样做。

inv_map = {my_map[x] : x for x in my_map}