Python中其他字典值函数的最大键

我有字典


stats = {'OK':0, 'SKIP':1, 'EXCEPTION':2, 'WARN':3, 'ERROR':4, 'FATAL':5}

我从一个不同的程序中获取值,该程序提供了这样的字典


my_values = {'Web': OK, 'Host': WARN, 'System': FATAL}

现在我想将my_values 中的值与stats键进行比较并获得最高结果。


例如:


如果my_values = {'Web': OK, 'Host': WARN, 'System': FATAL}函数应该返回FATAL


如果my_values = {'Web': OK, 'Host': WARN, 'System': ERROR}函数应该返回ERROR


if my_values = {'Web': OK, 'Host': WARN, 'System': WARN}函数应该返回WARN


到目前为止,我到这里,它只给出一个给定字典的最大值。


import operator


def high_value(my_value):

    stats = {'OK':0, 'SKIP':1, 'EXCEPTION':2, 'WARN':3, 'ERROR':4, 'FATAL':5}


    print max(stats.iteritems(), key=operator.itemgetter(1))[0]


high_value (my_values)


沧海一幻觉
浏览 177回答 3
3回答

繁星coding

您可以将其更改为 lambda:import operatordef 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) 

FFIVE

我会用这样的常量创建一个类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)

繁华开满天机

只需迭代my_valuesdict 以通过比较statsdict找到最大值import operatorstats = {'OK':0, 'SKIP':1, 'EXCEPTION':2, 'WARN':3, 'ERROR':4, 'FATAL':5}my_values = {'Web': 'OK', 'Host': 'WARN', 'System': 'FATAL'}value_string, max_value='', -1for k,v in my_values.items():&nbsp; &nbsp; if max_value< stats[v]:&nbsp; &nbsp; &nbsp; &nbsp; max_value=stats[v]&nbsp; &nbsp; &nbsp; &nbsp; value_string=kprint(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='','', -1for k,v in my_values.items():&nbsp; &nbsp; if max_value< stats[v]:&nbsp; &nbsp; &nbsp; &nbsp; max_value=stats[v]&nbsp; &nbsp; &nbsp; &nbsp; component=k&nbsp; &nbsp; &nbsp; &nbsp; status=vprint(component,max_value,status)输出('System', 5, 'FATAL')
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python