Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 最好用一行代码来翻转字典的键和值_Python - Fatal编程技术网

Python 最好用一行代码来翻转字典的键和值

Python 最好用一行代码来翻转字典的键和值,python,Python,我写了一行代码来实现这一点: vocab_tag = dict(zip(*reversed(zip(*tag_vocab.items())))) 有人能写一篇更容易理解/更直接的文章吗?一篇可读且简短的文章可能是最好的: vocab_tage = {value: key for key, value in tag_vocab.items()} 在2.7之前,字典理解不存在,但我们可以用dict()和生成器表达式来代替它们: vocab_tage = dict((value, key) for

我写了一行代码来实现这一点:

vocab_tag = dict(zip(*reversed(zip(*tag_vocab.items()))))
有人能写一篇更容易理解/更直接的文章吗?

一篇可读且简短的文章可能是最好的:

vocab_tage = {value: key for key, value in tag_vocab.items()}
在2.7之前,字典理解不存在,但我们可以用
dict()
和生成器表达式来代替它们:

vocab_tage = dict((value, key) for key, value in tag_vocab.items())

值得注意的是,这假定没有具有相同值的键(如问题中的示例所示)。

尝试以下一行:
dict(map(reversed,table.items())
性能+可读性 考虑到时间性能,这是最好的解决方案。它既可读又实用

给定字典,
a
,定义为

a = {'1' : 'a', '2' : 'b', '3' : 'c', '4' : 'd'}
这些实现以以下方式执行:

起初的


对用户使用方法的修改


%%timeit
b = dict(zip(*reversed(zip(*a.items()))))
100000 loops, best of 3: 3.09 µs per loop
%%timeit 
c = {v: k for k, v in a.items()}
1000000 loops, best of 3: 776 ns per loop
%%timeit 
d = dict(map(reversed, a.items()))
100000 loops, best of 3: 4.38 µs per loop
%%timeit
e = {v: k for k, v in a.iteritems()}
1000000 loops, best of 3: 598 ns per loop