Python 什么';从字典中获取最高和最低键的最简单方法是什么?
我需要设置两个变量:Python 什么';从字典中获取最高和最低键的最简单方法是什么?,python,dictionary,Python,Dictionary,我需要设置两个变量:max\u mood和min\u mood,这样我就可以对股票行情设置一些限制。 获取最低和最高键的最简单方法是什么 这应该可以做到: self.mood_scale = { '-30':"Panic", '-20':'Fear', '-10':'Concern', '0':'Normal', '10':'Satisfaction', '20':'Happiness', '30':'Euphoria'} 也许不是最有效
max\u mood
和min\u mood
,这样我就可以对股票行情设置一些限制。
获取最低和最高键的最简单方法是什么 这应该可以做到:
self.mood_scale = {
'-30':"Panic",
'-20':'Fear',
'-10':'Concern',
'0':'Normal',
'10':'Satisfaction',
'20':'Happiness',
'30':'Euphoria'}
也许不是最有效的(因为它必须获取并遍历键列表两次),但肯定是非常明显和清晰的
更新:我不知道你的键是字符串。因为这听起来好像是一个错误,所以我将保持原样,但请注意,它要求键是实际整数。这是有效的Python吗?我想你的意思是:
max_mood = max(self.mood_scale)
min_mood = min(self.mood_scale)
输出
恐慌
快感
使用INT作为键更好更快
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)))]
编辑2:
使用迭代器要快得多
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))]
另一种解决方案是在插入时跟踪最大/最小值,只需执行以下操作
mood\u scale.min()/max()这是有效的字典定义吗?字典应该有键和值。键不必是字符串。它们可以是整数。这也会让你的问题更容易回答。而且,语法是错误的。你不需要大括号,你可以在字典里找到字典。这对吗?不对,我错了。“对不起,已经更正了。”SilentGhost解释道:问题全搞糟了,加上括号-ilegal-和字符串,本来应该是int。我编辑并取出括号,然后编辑并将键转换为整数。当时没有太多的答案/评论,所以问题也不太复杂。我选择的答案给了我一个直截了当的解决方案,另外,我只是在@unwind编辑了答案,解释他没有注意到字符串/int混淆后才接受了答案。我很抱歉给您带来任何困惑。@Jorge,因为您使用字符串。而
-10
在词典上位于-20
@Jorge之前:它使用字符串的词典顺序。正如其他人所说,您可能真的需要整数键。那么你就可以得到预期的订单了。很明显,不是吗?我想我会喝一船咖啡因。因为键是字符串格式的,我们应该把它转换成整数。最大值:max([int(k)表示self.mood\u scale.keys()])
最小值:min([int(k)表示self.mood\u scale.keys()])
应该可以工作!很清楚(请参阅对其他答案的评论):这里不需要调用键
方法。您只需执行max(self.mood\u scale)
。在任何情况下都无需调用,keys()
;字典是一种可以产生键的可编辑工具,所以max(情绪量表)
就可以了。@Thomas Wouters我更喜欢“显式优于隐式”的意思也就是说“慢胜于快”或“内存多胜于内存少”?:)
print timeit.timeit( lambda: mood_scale[min(mood_scale.keys())])
print timeit.timeit( lambda: mood_scale[min(mood_scale)])
1.05913901329
0.662925004959
>>> min(self.mood_scale, key=int)
'-30'
>>> max(self.mood_scale, key=int)
'30'