给定2D数组,找到其中object [1]等于某个字符串x的对象

时间:2019-02-20 22:59:37

标签: python python-3.x

我有一个数组列表: [['ALC','10 .0',240001],['ALC','2401',240010]]

当我拥有字符串'2401'时,如何获取整个第二个数组条目

5 个答案:

答案 0 :(得分:1)

这应该有效:

tests = [ ['ALC', '10.0', 240001], ['ALC','2401', 240010] ]
print(list(filter(lambda x: '2401' in x, tests)))

Filter根据您提供的布尔条件过滤出一个项目。 所以我们在这里提供的标准是2401 in x

lambda中的x表示您作为参数提供的列表中的一个元素。提供的列表为tests(在lambda函数的右端)。

以下是filter

的更多示例

http://book.pythontips.com/en/latest/map_filter.html

以下是文档:

https://docs.python.org/3/library/functions.html#filter

答案 1 :(得分:0)

arraylist = [ ['ALC', '10.0', 240001], ['ALC','2401', 240010] ]
for array in arraylist:
    if '2401' in array:
        print array

答案 2 :(得分:0)

您可以使用简单的列表理解来获取匹配项列表:

data = [ ['ALC', '10.0', 240001], ['ALC','2401', 240010] ]

search = '2401'
filtered_data = [entry for entry in data if entry[1] == search]

filtered_data包含[['ALC', '2401', 240010]]

如果有多个匹配项:

data = [ ['ALC', '10.0', 240001], ['ALC','2401', 240010], ['ALC','2401', 240011], ['ALC','2401', 240012] ]

search = '2401'
filtered_data = [entry for entry in data if entry[1] == search]

filtered_data将包含[['ALC', '2401', 240010], ['ALC', '2401', 240011], ['ALC', '2401', 240012]]

答案 3 :(得分:0)

您只需要遍历主列表,然后使用in运算符检查您要查找的“术语”是否在“子列表”之内

def find_sublist_with_term(l, term):
    for subl in l:
        if term in subl:
            return subl

mylist = [ ['ALC', '10.0', 240001], ['ALC','2401', 240010] ]
found = find_sublist_with_term(mylist, "2401")

答案 4 :(得分:0)

一种生成器方法,也可以找到多个匹配项:

id

测试:

export function getSurveyResponse(id: number): QueryBuilder {
return db('surveys')
    .join('questions', 'questions.survey_id', '=', 'surveys.id')
    .join('questionAnswers', 'questionAnswers.question_id', '=', 'questions.id')
    .select('surveys.name', 'questions.question', 'questions.question', 'questionAnswers.answer')
    .where({ survey_id: id, question_id: id })
}