在Python中获取(不是全部)字典键的最大值

3

如何使用Python获取字典中只包含键x, y, wz的最大值?

my_dict = {"a":0, "b":5, "c":3, "x":4, "y":3, "w":2, "z": 1}

谢谢。


我可以使用 for 循环来获取键并将它们与列表中的项进行比较,但我知道这并不是性能和代码清晰度方面的最佳方法。 - Paulo Fabrício
请使用编辑按钮将您的代码发布在问题中,这样我们可以从那里开始。 - bfontaine
1
你对字符串的使用有些混乱,请仔细检查一下你是否意味着以你发布的方式混合使用整数和字符串。 - TheJJ
3个回答

5
你可以尝试这个方法:
my_dict = {"a":0, "b":5, "c":3, "x":4, "y":3, "w":2, "z": 1}
print(max(my_dict[i] for i in ["x", "y", "w", "z"]))

输出:

4

我太慢了 x) - Adrien Logut
OP刚刚编辑了输入。现在你的答案太复杂了...另外,稍微解释一下也无妨。 - Jean-François Fabre
1
重复一下Jean的话,你不需要使用列表括号。max(my_dict[i] for i in ["x", "y", "w", "z"]) 就可以了。你甚至可以使用元组,因为它是不可变的。max(my_dict[i] for i in ("x", "y", "w", "z")) - NinjaKitty
@xNinjaKittyx 谢谢您的澄清。请查看我的最近编辑。 - Ajax1234

2

您可以创建一个临时字典来保存您的值,然后在该字典中搜索您想要的值。

my_dict = {"a":0,"b":5,"c":3,"x":4, "y":3, "w":2, "z": 1}
newdict = {key:my_dict[key] for key in ['x', 'y','w','z']}
print(newdict[max(newdict, key=newdict.get)])

1
一种可能的方法是生成一个由目标元素的键和项目组成的元组列表。
tmp_tpl =  [(i, my_dict[i]) for i in ["x", "y", "z", "w"]]

然后取其中的max
out = max(tmp_tpl, key= lambda x:x[1])

请注意,这将打印一个键和项的元组,让您确定最大项对应哪个键。

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