我有一个数组列表:[['ALC','10 .0',240001],['ALC','2401',240010]]
当我有字符串'2401'时,如何获取整个第二个数组条目
这应该工作:
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
这是文档:
arraylist = [ ['ALC', '10.0', 240001], ['ALC','2401', 240010] ]
for array in arraylist:
if '2401' in array:
print array
您可以使用简单的列表推导来获取匹配列表:
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]]
。
一种生成器方法,也能够找到多个匹配:
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]]
您只需要遍历主列表然后使用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")