我想知道哪种方法可以在python中反转字典。我还希望通过比较键来消除重复值,并选择较大的值,假设它们可以进行比较。这是翻译字典:
inverted = dict([[v,k] for k,v in d.items()])
答案 0 :(得分:8)
要使用最大的键删除重复项,请按值对字典迭代器进行排序。对dict的调用将使用插入的最后一个键:
import operator
inverted = dict((v,k) for k,v in sorted(d.iteritems(), key=operator.itemgetter(1)))
答案 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)
与使用 sorted()的方法相比,此代码进行的比较更少,占用的内存更少。