json Python获取列表中最大值的索引:错误值在列表中,但找不到它

gijlo24d  于 2022-12-15  发布在  Python
关注(0)|答案(2)|浏览(117)

我试图获取列表中最大值的索引。到目前为止,它确实工作正常,但现在我需要在循环中创建它,并将这些索引和值保存在列表中。不知何故,我得到了一个错误,说我的最大值不在列表中,尽管我可以清楚地看到它在列表中。
我的代码到目前为止做了什么:我正在遍历一个JSON文件。在该文件中,我有一个包含许多值y00B的列表。在此列表中,我在res = file['labelindices']之前的代码中保存了一些索引。现在,在这些索引之间的范围中,我希望获取最大值及其索引
下面是我代码:

for file in json_data[sizes[i]]:
            count += 1                        # counting the files i am iterating trough
            res = file['labelindices']        # indices i want to get the values from
            y00B = file['triggerdata']        # list of my data
            for r in range(0, 2):
                valuesPeak = y00B[res[r]:res[r+2]] # this is right, do not ask :)
                print('valuesPeak:',valuesPeak)
                print('max value of current list', max(valuesPeak), 'count file = '
                      , count, ', length', len(valuesPeak))
                if len(valuesPeak) == 0:
                    valuesPeak = 0
                if valuesPeak == 0:
                    max_val.append(0)
                    max_index.append(0)
                else:
                    max_val.append(max(valuesPeak))
                    print(y00B.index(max_val))
                    max_index.append(y00B.index(max_val))

这是错误信息和我的打印结果

>> ValueError: [44431] is not in list
valuesPeak:  [26793, 29441, 32237, 35061, 37752, 40162, 42121, 43505, 44278, 44431, 43984, 42923, 41367, 39408, 37258, 34943, 32617, 30330]
max value of current list 44431 count file =  1 , length 18

有人能告诉我我做错了什么吗?值明明在列表里,为什么找不到它?当我重写代码时,没有for r range (0,2)循环,它工作得很好,但是我需要写两次,这是我试图避免的。

6ie5vjzr

6ie5vjzr1#

我删除了max_瓦尔变量bc,看起来我只需要索引。代码是:

max_index = []
    for i in range(0, sizesCount):
        for file in json_data[sizes[i]]:
            res = file['labelindices']
            y00B = file['triggerdata']
            for r in range(0, 2):
                valuesPeak = y00B[res[r]:res[r+2]] #0 ans 2, 1 and 3
                if len(valuesPeak) == 0:
                    valuesPeak = 0
                    max_index.append(0)
                else:
                    max_index.append(y00B.index(max(valuesPeak)))
            particlesize[sizes[i]].append({
            'maxvalpeak685index': max_index[0],
            'maxvalpeak450index': max_index[1]
            })
gt0wga4j

gt0wga4j2#

您可以简单地查找列表中任何值索引:

Mylist = [8.,9,1.2,6.,25,12,3,7.5]
Mylist.index( max(Mylist) )

相关问题