查找在元素 [1] 中具有常量的嵌套列表的最小值

Finding the minimum of a nested list that has a constant in element[1]

我有一个嵌套列表:

freqList = [[4, 2], [3, 2], [1, 1]]

我想在 index[0] 中找到在 index[1] 中常数(值)为 2 的最小数。

对于此列表,元素 1 和 2 在嵌套列表中的索引 [1] 处的值为 2,因此 4 和 3 符合条件且最小数量为 3,因此输出应为 3

    for val in freqList:
        print(val[0])

给我列表的 index[0] 中的值,但我不确定如何只打印 index[1] 中值为 2 的 index[0] 的值,然后如何 select最小值。

关于如何做到这一点有什么想法吗?

我是 Python 的初学者,所以我的解决方案可能太复杂了。

我可以建议以下方法

lst2 = []
for sublist in lst:
    if len( sublist ) >= 2 and sublist[1] == 2:
        lst2.append( sublist[0] )
min_value = min( lst2 )

其中 lst 是您的原始列表。

使用内置列表 lst2 您可以输出索引 1 的值等于 2 的子列表的索引 0 处的所有值。

例如

for value in lst2:
    print( value, end = ' ' )
print()
print( min( lst2 ) )

如果你想获得内部列表中第一个元素的最小值:

min([val[0] for val in freqList])

此外,如果您想检查内部列表的条件:

min([val[0] for val in freqList if CONDITION)

如果您的情况是 val[1] == 2(也是您问题的答案)

min([val[0] for val in freqList if val[1] == 2])

甚至您可以检查多个条件:

min([val[0] for val in freqList if ((val[1] == 2) and (len(val) == 2))])

你可以这样定义函数:

def find_minimum(where, const_id, const_val):
    values = []

    for i in where:
        if i[const_id] == const_val:
            values.append(i[0])

    return min(values)

用法:

list = [[4, 2], [3, 2], [1, 1]]
minimum = find_minimum(list, 1, 2)
print(minimum)