3 回答
TA贡献1797条经验 获得超4个赞
您可以将其更改为 lambda:
import operator
def high_value(my_value):
stats = {'OK':0, 'SKIP':1, 'EXCEPTION':2, 'WARN':3, 'ERROR':4, 'FATAL':5}
return max(my_value.items(), key=lambda x: stats.get(x[1])) )
my_values = {'Web': "OK", 'Host': "WARN", 'System': "FATAL"}
print(high_value(my_values))
输出:
('System', 'FATAL')
如果你只是想要'FATAL',你甚至不需要 lambda,dict.get如果你操作就足够了my_value.values():
def high_value(my_value):
stats = {'OK':0, 'SKIP':1, 'EXCEPTION':2, 'WARN':3, 'ERROR':4, 'FATAL':5}
return max(my_value.values(), key=stats.get)
TA贡献1797条经验 获得超6个赞
我会用这样的常量创建一个类
class STATS(object):
OK = 0
SKIP = 1
EXCEPTION = 2
FATAL = 3
LABELS = {
OK: "Ok",
FATAL: "Fatal"
}
并使用它:
myvals = {"Web": STATS.FATAL}
result = STATS.LABELS[myvals["Web"]]
print(result)
TA贡献1816条经验 获得超4个赞
只需迭代my_valuesdict 以通过比较statsdict找到最大值
import operator
stats = {'OK':0, 'SKIP':1, 'EXCEPTION':2, 'WARN':3, 'ERROR':4, 'FATAL':5}
my_values = {'Web': 'OK', 'Host': 'WARN', 'System': 'FATAL'}
value_string, max_value='', -1
for k,v in my_values.items():
if max_value< stats[v]:
max_value=stats[v]
value_string=k
print(value_string,max_value)
输出
('System', 5)
如果您需要所有信息,那么
stats = {'OK':0, 'SKIP':1, 'EXCEPTION':2, 'WARN':3, 'ERROR':4, 'FATAL':5}
my_values = {'Web': 'OK', 'Host': 'WARN', 'System': 'FATAL'}
status,component, max_value='','', -1
for k,v in my_values.items():
if max_value< stats[v]:
max_value=stats[v]
component=k
status=v
print(component,max_value,status)
输出
('System', 5, 'FATAL')
添加回答
举报