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

问题描述 投票:1回答:5

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

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

python python-3.x
5个回答
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


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

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]]


0
投票

一种生成器方法,也能够找到多个匹配:

def find_subarray(arr, s):
    for a in arr:
        if a[1]==s:
            yield a

测试:

loa = [ ['ALC', '10.0', 240001], ['ALC','2401', 240010], ['ALD','2401', 240010], ['ALF','2401', 240010]]
result = find_subarray(loa, "2401")
print(list(result))
# [['ALC', '2401', 240010], ['ALD', '2401', 240010], ['ALF', '2401', 240010]]

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")
© www.soinside.com 2019 - 2024. All rights reserved.