访问 3D 列表中的元素



>我有一个列表:

[['EWR', 2, 3], ['Queens', 0, 5], ['Brooklyn', 1, 1] ]

如果我在变量中有字符串皇后,我将如何提取 0?

换句话说,我将如何表达:我想要列表中以 Queens 一词开头的第一个 int。

编辑:皇后乐队(和一般的弦乐(总是排在第一位。列表结构无法更改

IIUC 您可以使用以下列表理解。如果您对第一个整数感兴趣,只需索引子列表即可在'Queens'第一个字符串时选择第二个值:

l = [['EWR', 2, 3], ['Queens', 0, 5], ['Brooklyn', 1, 1] ]
[i[1] for i in l if i[0] == 'Queens']
# [0]

你可能只是蛮力破解它,我做一个例子很容易理解:

def find_in_3d(input, your_list):
    for second_layer in your_list:
            if input in second_layer:
                return second_layer[1]

遍历列表,并检查条件是否在列表中存在皇后区,然后在输出列表中附加第二个元素

lst = [['EWR', 2, 3], ['Queens', 0, 5], ['Brooklyn', 1, 1] ]
ext_list = []
for l in lst:
    if 'Queens' in l:
        ext_list.append(l[1])
print(ext_list)
#[0]

如果你想要第一个int并且你不确定它会是什么索引,你可以使用列表推导和python内置filter()函数进行如下。因为我们利用的是使用 generators 而不是lists in out 列表理解,所以我们在找到第一个int值或第一个值的最后一个句子是否Queens后,总是会停止迭代。

x = next(next(filter(lambda x:isinstance(x, int), i)) for i in my_list if i[0] == 'Queens')
print(x) # -> 0

最新更新