Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.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 - Fatal编程技术网

Python 查找对应的列号以获得最大值

Python 查找对应的列号以获得最大值,python,Python,我想找到对应于行中最高值的列号 我需要将其编写为一个函数,将以下字典作为参数: {'1': {'3': 0, '2': 1, '5': 1, '4': 0, '6': 29}, '3': {'1': 0, '2': 0, '5': 0, '4': 1, '6': 1}, '2': {'1': 13, '3': 1, '5': 21, '4': 0, '6': 0}, '5': {'1': 39, '3': 0, '2': 1, '4': 0, '6': 14},

我想找到对应于行中最高值的列号

我需要将其编写为一个函数,将以下字典作为参数:

    {'1': {'3': 0, '2': 1, '5': 1, '4': 0, '6': 29},
    '3': {'1': 0, '2': 0, '5': 0, '4': 1, '6': 1},
    '2': {'1': 13, '3': 1, '5': 21, '4': 0, '6': 0},
    '5': {'1': 39, '3': 0, '2': 1, '4': 0, '6': 14},
    '4': {'1': 1, '3': 1, '2': 17, '5': 2, '6': 0},
    '6': {'1': 0, '3': 43, '2': 0, '5': 0, '4': 1}}
我的第一排是4号。我通过以下方式找到最高的数字:

max(d['4'].values())

根据字典的矩阵表示,我知道这个数字在第2列。我想让我的函数返回这个数字。怎么做?

像这样的方法应该有效:

max(d['4'].iteritems(), key=lambda x: x[1])[0]

像这样的方法应该会奏效:

max(d['4'].iteritems(), key=lambda x: x[1])[0]
我认为您需要字典的items方法:

col,value = max(d['4'].items(), key = lambda x: x[1])
将其分解以了解其工作原理:

items返回python3中键值元组的列表或iterable对象 max接受第二个参数,该参数是用于实际比较项目的函数。在本例中,我们将每个元组中的第二项作为值 max返回整个元组,我们使用col,value=max。。。 我认为您需要字典的items方法:

col,value = max(d['4'].items(), key = lambda x: x[1])
将其分解以了解其工作原理:

items返回python3中键值元组的列表或iterable对象 max接受第二个参数,该参数是用于实际比较项目的函数。在本例中,我们将每个元组中的第二项作为值 max返回整个元组,我们使用col,value=max。。。 你的字典在哪里

其中d是您的字典。

代码:

def key_of_max_value(d):
    for k, v in d.iteritems():
        yield k, max((v, k) for k, v in v.iteritems())
测试代码:

def test_key_of_max_value():
    d = {
        '1': {'3': 0, '2': 1, '5': 1, '4': 0, '6': 29},
        '3': {'1': 0, '2': 0, '5': 0, '4': 1, '6': 1},
        '2': {'1': 13, '3': 1, '5': 21, '4': 0, '6': 0},
        '5': {'1': 39, '3': 0, '2': 1, '4': 0, '6': 14},
        '4': {'1': 1, '3': 1, '2': 17, '5': 2, '6': 0},
        '6': {'1': 0, '3': 43, '2': 0, '5': 0, '4': 1}
    }
    for k, (value, column_key) in key_of_max_value(d):
        print k, column_key, value    

test_key_of_max_value()
结果:

1 6 29
3 6 1
2 5 21
5 1 39
4 2 17
6 3 43
代码:

测试代码:

def test_key_of_max_value():
    d = {
        '1': {'3': 0, '2': 1, '5': 1, '4': 0, '6': 29},
        '3': {'1': 0, '2': 0, '5': 0, '4': 1, '6': 1},
        '2': {'1': 13, '3': 1, '5': 21, '4': 0, '6': 0},
        '5': {'1': 39, '3': 0, '2': 1, '4': 0, '6': 14},
        '4': {'1': 1, '3': 1, '2': 17, '5': 2, '6': 0},
        '6': {'1': 0, '3': 43, '2': 0, '5': 0, '4': 1}
    }
    for k, (value, column_key) in key_of_max_value(d):
        print k, column_key, value    

test_key_of_max_value()
结果:

1 6 29
3 6 1
2 5 21
5 1 39
4 2 17
6 3 43

为什么你要用整数的字符串表示法而不是整数来索引字典?这是在练习中给我的字典为什么你要用整数的字符串表示法而不是整数来索引字典?这是在练习中给我的字典。当我使用那一行时,我得到一个错误无效语法并建议“=”请粘贴准确的错误消息,如果您也可以粘贴代码,请粘贴。如果我不想使用函数返回字典中最大值的列号,那么不知道行。这可能吗?@安妮:是的,是的。将每一行减少到其最大值,然后以相同的方式减少整个字典。r=maxmaplambda i:i[0],maxi[1]。iteritems,key=lambda j:j[1],d.iteritems,key=lambda x:x[1][1]这很难看,但它可以工作。r[0]是外部dict键,r[1][0]是内部dict键,r[1][1]是确定为最大值的值。当我使用该i行时,我收到一个错误,表示语法无效并建议“=”请粘贴准确的错误消息,如果我不想让函数返回字典中最大值的列号,那么就不需要知道行。这可能吗?@安妮:是的,是的。将每一行减少到其最大值,然后以相同的方式减少整个字典。r=maxmaplambda i:i[0],maxi[1]。iteritems,key=lambda j:j[1],d.iteritems,key=lambda x:x[1][1]这很难看,但它可以工作。r[0]是外部dict键,r[1][0]是内部dict键,r[1][1]是确定为最大的值。如果写入打印maxd['4'],items,key=lambda k,v:v[0]我出现语法错误,为什么?如果写入打印maxd['4'],items,key=lambda k,v:v[0]我出现语法错误,为什么?