2024-04-29 14:02:36 发布
网友
self.mood_scale = { '-30':"Panic", '-20':'Fear', '-10':'Concern', '0':'Normal', '10':'Satisfaction', '20':'Happiness', '30':'Euphoria'}
我需要设置两个变量:max_mood和min_mood,这样我就可以对一个ticker设置一些限制。 什么是最容易得到最低和最高的钥匙?
max_mood
min_mood
这应该做到:
max_mood = max(self.mood_scale) min_mood = min(self.mood_scale)
也许不是最有效的(因为它必须获得并遍历键列表两次),但肯定非常明显和清晰。
更新:我没意识到你的钥匙是字符串。因为这听起来好像是个错误,所以我会让它保持原样,但请注意,它要求键是实际的整数。
>>> min(self.mood_scale, key=int) '-30' >>> max(self.mood_scale, key=int) '30'
那是有效的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)))]
输出
Panic Euphoria
以整数为键,更快更好
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
另一种解决方案是在插入时跟踪max/min值,然后 mood_scale.min()/max()
这应该做到:
也许不是最有效的(因为它必须获得并遍历键列表两次),但肯定非常明显和清晰。
更新:我没意识到你的钥匙是字符串。因为这听起来好像是个错误,所以我会让它保持原样,但请注意,它要求键是实际的整数。
那是有效的Python吗?我想你的意思是:
输出
以整数为键,更快更好
编辑2: 使用迭代器要快得多
另一种解决方案是在插入时跟踪max/min值,然后 mood_scale.min()/max()
相关问题 更多 >
编程相关推荐