2012-08-15 77 views
2

假设有一本字典逆转一到一个映射字典

a = {'a':122,'b':123,'d':333,'e':'233'} 

现在我想恢复它作为一个对一个字典,以便我们能够做到这一点。

我曾尝试:

In [67]: ivd=[(v,k) for (k,v) in a.items()] 

In [68]: ivd 
Out[68]: [(122, 'a'), (123, 'b'), ('233', 'e'), (333, 'd')] 

现在可能有一些我们可以如何ivd转换成字典。我的问题是

  1. 如何将ivd更改为字典?
  2. 有没有更多pythonic解决方案可以做到这一点?我认为它应该在那里。
+0

如果你在最后一行没有得到语法错误,ipython会被破坏;这当然是cpython中的一个语法错误。 – geoffspear 2012-08-15 22:11:31

+0

它只是ipython中的一个错误,或者它仅仅是我的本地系统中的一个错误? – 2012-08-15 22:12:26

+0

我刚刚安装了ipython,它为您发布的内容提供了语法错误。 – geoffspear 2012-08-15 22:15:17

回答

11

您可以使用字典的构造函数:

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

或字典理解在Python 2.7或更高版本:

ivd = {v: k for (k, v) in a.items()} 
+0

'dict([(v,k)for(k,v)in a.items()])'for Python2在生成器表达式之前 – 2012-08-15 22:13:07

+1

您为我做了一天!我不知道字典的理解。万分感谢。 – 2012-08-15 23:08:01

0

为什么不

ivd = {a[key]:key for key in a} 

其中一个是你的字典?这似乎更简单。在python中,你可以直接遍历字典的键。