Python 按字典顺序返回排序数组

Python 按字典顺序返回排序数组,python,python-2.7,list,filter,Python,Python 2.7,List,Filter,我需要它返回: a1 = ['arp', 'bull', 'mice'] a2 = ["lively", "alive", "harp", "sharp", "armstrong"] 我的代码是: ['arp'] 它的作用是: def in_array(array1, array2): x = array1 return sorted(x) 如何对数组进行排序并仅匹配a2的子字符串中已排序的元素?您只需使用过滤器并检查a2中是否有任何(…)元素包含这样的子字符串: a1 =

我需要它返回:

a1 = ['arp', 'bull', 'mice']
a2 = ["lively", "alive", "harp", "sharp", "armstrong"]
我的代码是:

['arp']
它的作用是:

def in_array(array1, array2):
    x = array1
    return sorted(x)

如何对数组进行排序并仅匹配a2的子字符串中已排序的元素?

您只需使用
过滤器
并检查
a2中是否有任何(…)
元素包含这样的子字符串:

a1 = ["live", "arp", "strong"] 
a2 = ["lively", "alive", "harp", "sharp", "armstrong"]
r = ['arp', 'live', 'strong']
如果您还希望对结果进行排序,可以使用
排序(…)

如果要消除重复项,可以使用
set(..)

该算法将在O(n×m+n×log(n))中运行,n表示
a1
中的元素数,m表示
a2
中的元素数


如果可以在
ar2
上进行预处理(并生成例如trie),则可以提高算法的复杂度O(n)。但是,只有当
a1
中的元素数量比
a2
中的元素数量大时,这才是有益的。是否要排序?还是过滤器?我想分类和过滤谢谢你!现在它只通过了一次测试。我需要它不返回副本(只返回1份)。我不熟悉lambda的工作原理,但目前正在阅读。有没有关于我将如何着手做这件事的建议?
def in_array(a1,a2):
    return filter(lambda e1: any(e1 in e2 for e2 in a2),a1)
def in_array(a1,a2):
    return sorted(filter(lambda e1: any(e1 in e2 for e2 in a2),a1))
def in_array(a1,a2):
    return sorted(set(filter(lambda e1: any(e1 in e2 for e2 in a2),a1)))