Python从di打印单个键/值对

2024-09-28 01:31:12 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有下面的代码来生成dict:

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变量配对的密钥,而不必遍历整个dict?像下面那行的伪代码。在

注意:我不想从键中获取值。我要反过来。在


Tags: 代码nametruefreddictmaxreversevalues
1条回答
网友
1楼 · 发布于 2024-09-28 01:31:12

不要只对values排序。按valuesitems进行排序,并免费获得密钥。在

from operator import itemgetter

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

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

^{pr2}$

对于反转dict的一般情况,如果值是唯一的,则创建一个反向映射是很简单的:

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

如果这些值不是唯一的,并且您希望通过一次查找来查找与单个值相对应的所有键,则可以将其转换为多个dict:

from collections import defaultdict

invert_dict = defaultdict(set)
for k, v in orig_dict.items():
    invert_dict[v].add(k)
# Optionally convert back to regular dict to avoid lookup auto-vivification in the future:
# invert_dict = dict(invert_dict)

相关问题 更多 >

    热门问题