如何查看两个不同的元组列表中的元素是否匹配

时间:2019-04-29 20:15:35

标签: python-3.x

我有两个要使用的元组列表,以最终帮助我实现流程自动化。我正在寻找如何正确识别那些元组列表中是否存在匹配项。

我已经尝试过使元组列表变平,以使它们更易于使用,并且我在想确定元素是否与布尔语句匹配,但是我不确定如何使程序运行这两个元组列表。

list1 = [[('1306264304', 'Coca-Cola Zero Sugar Cola, Cans', '1'), ('1176982083', "Ito En Teas\\' Tea, Jasmine Green, Plastic Bottles", '1'), ('-975890652', "Ito En Teas\\' Tea, Lemongrass Green, Plastic Bottles", '1'), ('-1152939818', "Ito En Teas\\' Tea, Pure Green, Plastic Bottles", '1'), ('19102859', 'LaCroix Sparkling Water, Coconut, Cans', '1'), ('-546157568', 'LaCroix Sparkling Water, Grapefruit, Cans', '1')]] 

and

list2 = [[((beverages)'Coca-Cola Zero Sugar Cola, Cans', 4), ("Ito En Teas\\' Tea, Jasmine Green, Plastic Bottles", 3), ("Ito En Teas\\' Tea, Pure Green, Plastic Bottles", 5)]]

如果list1中的元组元素与list2中的元组元素匹配,我需要它返回true。例如:如果两个列表中均显示“可口可乐零糖可乐,罐头”,则需要获取它以标识该匹配项。实际上,我对如何编写此代码有些迷惑。我知道我需要一个循环,仅此而已。非常感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

这应该可以解决问题。该函数在内部很好地注释过,但是从本质上讲,我们循环遍历一个数组,并对照第二个数组中的项目检查每个项目。如果存在匹配项,则返回true。如果不是,则返回false。

# Create function
def find_match(arr1, arr2):
    # Loop through first array
    for item in arr1:
        # Given the current item, check it against items in other array
        for arr2_item in arr2:
            # Print what you are comparing
            print("array 1 item: ", item, "array 2 item: ", arr2_item)
            # If there is a match
            if item == arr2_item:
                # Return true
                return True
        # If not
        else:
            # Keep going
            continue
    # If you havent returned by this point, it means there is no match
    return False

# Main function
def main():
    # Example dummy list one
    list1 = ['a', 'b', 'c', 'd']
    # Example dummy list two
    list2 = ['d', 'e', 'f', 'g']

    # Call the function
    did_it_match = find_match(list1, list2)
    # Print the result
    print(did_it_match)

# Call main    
main()   

注意-您发布的数组的格式似乎不正确,因此我无法使用它们。

**

**每个OP特定指南的更新**

** 下面的代码是从其他已发布的代码示例中编辑而来的,但这是使用OP已发布的数组的有效解决方案。

def solution(list1, list2):
    for index, item in enumerate(list1[0]):
        for index, item2 in enumerate(list2[0]):

            for item3 in item:

                for item4 in item2:

                    if item3==item4:
                        return True

    return False

def main():
    list1 = [[('1306264304', 'Coca-Cola Zero Sugar Cola, Cans', '1'), ('1176982083', "Ito En Teas\\' Tea, Jasmine Green, Plastic Bottles", '1'), ('-975890652', "Ito En Teas\\' Tea, Lemongrass Green, Plastic Bottles", '1'), ('-1152939818', "Ito En Teas\\' Tea, Pure Green, Plastic Bottles", '1'), ('19102859', 'LaCroix Sparkling Water, Coconut, Cans', '1'), ('-546157568', 'LaCroix Sparkling Water, Grapefruit, Cans', '1')]] 
    list2 = [[('Coca-Cola Zero Sugar Cola, Cans', 4), ("Ito En Teas\\' Tea, Jasmine Green, Plastic Bottles", 3), ("Ito En Teas\\' Tea, Pure Green, Plastic Bottles", 5)]]

    does_match = solution(list1, list2)
    print(does_match)

main()

这将返回 True

答案 1 :(得分:1)

这就是您要寻找的东西:

由于我们可以假设您的列表中有一个包含元组的列表,因此应该可以做到这一点:

def function():
    for index, item in enumerate(list1[0]):
        for index, item2 in enumerate(list2[0]):

            for item3 in item:

                for item4 in item2:

                    if item3==item4:
                        return True