获取字典中最大和最小键的最简单方法是什么?

4 投票
3 回答
8587 浏览
提问于 2025-04-15 21:38
self.mood_scale = {
    '-30':"Panic",
    '-20':'Fear',
    '-10':'Concern',
    '0':'Normal',
    '10':'Satisfaction',
    '20':'Happiness',
    '30':'Euphoria'}

我需要设置两个变量:max_moodmin_mood,这样我就可以给一个指标设定一些限制。请问有什么简单的方法可以找到最低和最高的值吗?

3 个回答

7

这段代码是有效的Python吗?我觉得你想表达的是:

mood_scale = {
    '-30':"Panic",
    '-20':'Fear',
    '-10':'Concern',
    '0':'Normal',
    '10':'Satisfaction',
    '20':'Happiness',
    '30':'Euphoria'}

print mood_scale[str(min(map(int,mood_scale)))]
print mood_scale[str(max(map(int,mood_scale)))]

输出结果

恐慌 兴奋

用整数作为键会更好更快

mood_scale = {
    -30:"Panic",
    -20:'Fear',
    -10:'Concern',
    0:'Normal',
    10:'Satisfaction',
    20:'Happiness',
    30:'Euphoria'}

print mood_scale[min(mood_scale))]
print mood_scale[max(mood_scale))]

编辑2: 使用迭代器会快得多

print timeit.timeit( lambda: mood_scale[min(mood_scale.keys())])
print timeit.timeit( lambda: mood_scale[min(mood_scale)])
1.05913901329
0.662925004959

另一种解决方案是,在插入时跟踪最大值和最小值,然后简单地使用 mood_scale.min() / max()

12

在编程中,有时候我们需要处理一些数据,这些数据可能是从用户那里输入的,或者是从其他地方获取的。为了让程序能够理解这些数据,我们通常会把它们转换成一种特定的格式。

比如说,如果你有一个数字字符串“123”,程序可能需要把它转换成真正的数字123,这样才能进行数学运算。这个过程就叫做“类型转换”。

在不同的编程语言中,类型转换的方法可能会有所不同。有些语言会自动帮你转换,而有些则需要你手动去做。

总之,理解数据的类型和如何转换它们,是编程中非常重要的一部分。这样才能确保程序能够正确地处理和使用这些数据。

>>> min(self.mood_scale, key=int)
'-30'
>>> max(self.mood_scale, key=int)
'30'
9

这样做应该可以:

max_mood = max(self.mood_scale)
min_mood = min(self.mood_scale)

可能不是最有效的方法(因为它需要获取并遍历键的列表两次),但肯定是非常明显和清晰的。

更新:我没注意到你的键是字符串。听起来这可能是个错误,所以我就不改了,但请注意,这个方法要求键必须是真正的整数。

撰写回答