2011-10-20 29 views
6

我想知道哪个反转python中的字典是一种有效的方法。我还想通过比较键和选择较小的假设可以比较来摆脱重复值。这里是反相的字典:在Python中反转字典

inverted = dict([[v,k] for k,v in d.items()]) 

回答

8

要使用最大的键删除重复项,请按值对字典迭代器进行排序。 “通过比较键并选择了较小的假设他们可以比大我也想摆脱重复值的。”

import operator 
inverted = dict((v,k) for k,v in sorted(d.iteritems(), key=operator.itemgetter(1))) 
0

下面是一个简单而直接执行反向字典和保留任何重复值较大的:

inverted = {} 
for k, v in d.iteritems(): 
    if v in inverted: 
     inverted[v] = max(inverted[v], k) 
    else: 
     inverted[v] = k 

这可以拧紧机位与dict.get()

inverted = {} 
for k, v in d.iteritems(): 
    inverted[v] = max(inverted.get(v, k), k) 

该代码使得更少的比较和使用较少的内存比使用排序的方法()

+7

:以字典的通话将使用插入的最后关键 – agf