gpt4 book ai didi

python - 根据定义的顺序获取Python字典中字典值最小的键列表

转载 作者:太空宇宙 更新时间:2023-11-03 21:41:52 25 4
gpt4 key购买 nike

我有一本字典,例如:

d = {'a':[0,0], 'b':[0,0], 'c':[0,1], 'd':[1,1]}

值有一个顺序,基本上是字典顺序,例如 [0, 0] < [0,1] < [1,1] .

我有兴趣根据此顺序检索值最小的键。在这种情况下,期望的结果是:

result = ['a', 'b']

我可以通过(1)获取字典的值,(2)将其转换为列表 L,(3)对 L 进行排序:

L.sort(key = str),

然后(4)获取排序后的L中的最小元素m,最后(5)检索值为m的键。

我可以想到这个过程的其他变体,但它们都涉及到查字典和比较事物,而且它们可能都太复杂了。

我的问题是是否有一些更简单、更优雅(并且更有效)的方法来做到这一点。我应该首先使用不同的数据结构而不是字典吗?

最佳答案

最简单的方法是使用min()函数查找最小值,然后使用列表理解选择与该最小值对应的键:

d = {'a': [0, 0], 'b': [0, 0], 'c': [0, 1], 'd': [1, 1]}
min_value = min(d.values())
keys = [key for key, val in d.items() if val == min_value]

此解决方案具有 O(n)时间复杂度。

您还可以使用 itertools.groupby ,尽管这需要按值对字典进行排序(因此需要 O(n log n) 时间运行):

from itertools import groupby
keys = next(list(g) for k, g in groupby(sorted(d, key=d.get), key=d.get))

关于python - 根据定义的顺序获取Python字典中字典值最小的键列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52795444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com