Python中的字典反转

6
我想知道在Python中反转字典的有效方法。我还想通过比较键并选择较大的键来消除重复值,假设它们可以进行比较。这是一个反转字典的例子:
inverted = dict([[v,k] for k,v in d.items()])
2个回答

8

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

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)

这段代码比使用 sorted() 的方法进行更少的比较并且使用更少的内存。


7
我也想通过比较键并选择较大的键来消除重复值,假设它们可以进行比较。 - agf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接