Python从dict打印单键/值对

时间:2015-11-04 05:00:28

标签: python dictionary hash

说我有以下代码制作一个字典:

x = 0
myHash = {}
name = ["Max","Fred","Alice","Bobby"]

while x <= 3:
    myHash[name[x]] = x
    x += 1

l = sorted(myHash.values(), reverse=True)
largestNum = l[0]

# print myHash.getKeyFromValue(largestNum)

是否可以轻松获取与largestNum变量配对的密钥而不循环整个字典?类似于底部行中的伪代码。

注意:我不想从密钥中获取值。我希望与此相反。

1 个答案:

答案 0 :(得分:1)

不要只对values进行排序。按items排序values,免费获取密钥。

from operator import itemgetter

l = sorted(myHash.items(), key=itemgetter(1), reverse=True)
largestKey, largestNum = l[0]

注意:如果您只想要最大值而不是其他排序结果,则可以保存一些工作并跳过完整的sorted工作(将工作从O(n log n)减少到{{1} }):

O(n)

对于反转largestKey, largestNum = max(myHash.items(), key=itemgetter(1)) 的一般情况,如果值是唯一的,那么创建反向映射是微不足道的:

dict

如果值不是唯一的,并且您希望通过单个查找找到与单个值对应的所有键,则您将反转为多字典:

invert_dict = {v: k for k, v in orig_dict.items()}