为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

沧海一幻觉 2021-09-23 09:07:36
我有字典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}函数应该返回ERRORif my_values = {'Web': OK, 'Host': WARN, 'System': WARN}函数应该返回WARN到目前为止,我到这里,它只给出一个给定字典的最大值。import operatordef 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)
查看完整描述

3 回答

?
繁星coding

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) 


查看完整回答
反对 回复 2021-09-23
?
FFIVE

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)


查看完整回答
反对 回复 2021-09-23
?
繁华开满天机

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')


查看完整回答
反对 回复 2021-09-23
  • 3 回答
  • 0 关注
  • 176 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信