Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 什么';从字典中获取最高和最低键的最简单方法是什么?_Python_Dictionary - Fatal编程技术网

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'