Python中的字典反转

Python中的字典反转,python,maps,dictionary,Python,Maps,Dictionary,我想知道哪种方法是在python中反转字典的有效方法。我还希望通过比较键并选择较大的键而不是较小的键来消除重复值,假设它们可以进行比较。这是一本颠倒的字典: inverted = dict([[v,k] for k,v in d.items()]) 下面是一个简单而直接的实现,用于反转字典并保留任何重复值中的较大值: inverted = {} for k, v in d.iteritems(): if v in inverted: inverted[v] = max(

我想知道哪种方法是在python中反转字典的有效方法。我还希望通过比较键并选择较大的键而不是较小的键来消除重复值,假设它们可以进行比较。这是一本颠倒的字典:

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

下面是一个简单而直接的实现,用于反转字典并保留任何重复值中的较大值:

inverted = {}
for k, v in d.iteritems():
    if v in inverted:
        inverted[v] = max(inverted[v], k)
    else:
        inverted[v] = k  
这可以通过dict.get()稍微收紧:


与使用sorted()的方法相比,此代码进行的比较更少,占用的内存更少。

要使用最大键删除重复项,请按值对字典迭代器进行排序。对dict的调用将使用插入的最后一个键:

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

“我还希望通过比较键并选择较大的键而不是较小的键来消除重复值,前提是它们可以进行比较。”
import operator
inverted = dict((v,k) for k,v in sorted(d.iteritems(), key=operator.itemgetter(1)))