检查子字符串数组是否都存在于字符串数组中

我有一个有点复杂的问题(对于我有限的Python知识)关于迭代和检查数组是否有任何缺失值。


我有一个键字符串数组,我需要检查数组是否包含另一个数组中的所有子字符串。如果没有,我需要输出缺少的内容。


例:


array1 = ['key/value/one123904', 'key/value/two342389', 'key/value/three234093']

array2 = ['one', 'two', 'three', 'four']

我的理想输出是说所有元素都存在,如果它们存在,或者在上面的例子中,输出array2array1No key for value: four


翻过高山走不出你
浏览 175回答 5
5回答

MM们

您可以通过迭代子字符串列表来实现此目的,并测试 中的任何键字符串是否包含此子字符串,即:array2array1for string in array2:    if not any(string in key_string for key_string in array1):        print("No key for value: " + string)        break                                                                   else:                                                                               print("All elements of array2 exist in array1")如果您不熟悉 的子句,这将仅在循环正常退出时执行,即如果用于提前终止循环,则不会执行。elseforbreak如果要记录所有不存在的子字符串:missing = [string for string in array2                                                     if not any(string in ks for ks in array1)]                           if missing:                                                                         for string in missing:                                                              print("No key for value: " + string)                                    else:                                                                               print("All elements of array2 exist in array1")

米琪卡哇伊

这是我能够为您的问题制作的方法,def missing(arr1, arr2):    #arr1 is the array of strings to be searched    #arr2 is the array of substrings    notFound=""    for i in arr2: # i = each element in array 2        for j in arr1: # j = each element in array 1            if i in j: # if substring of i is in an element in j                break # moves onto next element in the array            elif j == arr1[-1]: # if not found in the string, checks if  on the last item in the array.                notFound = notFound+" "+i    if notFound != "":        print("No key for value:", notFound)    else:        print("all elements of array2 exist in array1")

慕田峪9158850

sum_array1 =""for string1 in array1:    sum_array1 = sum_array1 + string1 + ","missing = [string2 for string2 in array2 if string2 not in sum_array1]if missing:                                                                         for string in missing:                                                              print("No key for value: " + string)                                    else:                                                                               print("All elements of array2 exist in array1")

肥皂起泡泡

在一行中:print(    "No key for value(s): {}".format(        " ".join([k for k in array2 if not any(k in v for v in array1) ])    ))或者,如果您想更正确地处理所有值存在的情况no_match = [k for k in array2 if not any(k in v for v in array1) ]print(    "No key for value(s): {}".format(" ".join(no_match))    if no_match    else "All keys have values")

慕勒3428872

array1 = ['key/value/one123904', 'key/value/two342389', 'key/value/three234093']array2 = ['one', 'two', 'three', 'four']def does_match_in_array_of_string(key: str, search_list : list) -> bool:    for item in search_list:        if key in item:            return True    return False;match_failures = [key for key in array2 if not does_match_in_array_of_string(key, array1)]if len(match_failures):    print(f'No key for values: {match_failures}')else:    print('All keys have values')
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python