检查元组数组中的匹配值 - python

好的,我有两个元组数组。我想检查数组二(在其子数组中)是否具有数组一中的匹配元素。如果是这样,我想将 True 或 False 值附加到Array One的元组中

例如结果应该是:

[
('Rabbits', [('/home/white', 'white rabbits', False), ('/home/black', 'black rabbits', True), ('/home/green', 'green rabbits', True)]), ('Cats', [('/ans/pink', 'pink cats', True), ('/ans/purple', 'purple cats', False), ('/home/grey', 'grey cats', True)]), ('Hippos', [('/home/red', 'red hippo', False)])]

阵列一

[
('Rabbits', [('/home/white', 'white rabbits'), ('/home/black', 'black rabbits'), ('/home/green', 'green rabbits')]), ('Cats', [('/ans/pink', 'pink cats'), ('/ans/purple', 'purple cats'), ('/home/grey', 'grey cats')], ('Hippos', ['/home/red', 'red hippo'])), 
]

阵列二

[
('Rabbits', [('/home/black', 'black rabbits'), ('/home/green', 'green rabbits')]), ('Cats', [('/ans/pink', 'pink cats'), ('/home/grey', 'grey cats')]), ('Hippos', []) 
]

当前尝试 1:(给定一个数组,每个元素将附加四次 3x false 和 1x True)

def parse_selectedmenu(array_one, array_two):

    # boolean flag used when rendering checkbox 'ticked' in template

    selected = True

    not_selected = False 

    index = 0

    # array_one = list(array_one)

    # array_two = list(array_two)

    final_array = []

    for array_one_name, default_items in array_one:

        final_array.append([array_one_name])

        # loop through the ticked "made available" items in post data

        for array_two_name, custom_items in array_two:

            # loop through default sub menu items in default menu

            for default_item in default_items:

                for custom_item in custom_items:

                    # if a requested menu item exists in default sub menu 

                    if default_item[0] == custom_item[0] and default_item[1] == custom_item[1]:

                        if len(default_item) <= 2:

                            mylist = list(default_item)

                            # append selcted against matched menu item in default menu items


江户川乱折腾
浏览 83回答 2
2回答

至尊宝的传说

看来您在输入数据中使用括号时存在一些细微的不一致,我冒昧地纠正了这些不一致。完成此操作后,为了真正解决问题,我认为将第二个数组转换为字典以便于包含测试是有意义的。这给出:from pprint import pprintarray_1 = [('Rabbits', [('/home/white', 'white rabbits'),&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ('/home/black', 'black rabbits'),&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ('/home/green', 'green rabbits')]),&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;('Cats', [('/ans/pink', 'pink cats'),&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;('/ans/purple', 'purple cats'),&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;('/home/grey', 'grey cats')]),&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;('Hippos', [('/home/red', 'red hippo')])]&nbsp;array_2 = [('Rabbits', [('/home/black', 'black rabbits'),&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ('/home/green', 'green rabbits')]),&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;('Cats', [('/ans/pink', 'pink cats'),&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;('/home/grey', 'grey cats')]),&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;('Hippos', [])]d = dict(array_2)out = []for species, tups in array_1:&nbsp; &nbsp; lst = []&nbsp; &nbsp; for tup in tups:&nbsp; &nbsp; &nbsp; &nbsp; if tup in d[species]:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lst.append(tup + (True,))&nbsp; &nbsp; &nbsp; &nbsp; else:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lst.append(tup + (False,))&nbsp; &nbsp; out.append((species, lst))pprint(out)输出:[('Rabbits',&nbsp; [('/home/white', 'white rabbits', False),&nbsp; &nbsp;('/home/black', 'black rabbits', True),&nbsp; &nbsp;('/home/green', 'green rabbits', True)]),&nbsp;('Cats',&nbsp; [('/ans/pink', 'pink cats', True),&nbsp; &nbsp;('/ans/purple', 'purple cats', False),&nbsp; &nbsp;('/home/grey', 'grey cats', True)]),&nbsp;('Hippos', [('/home/red', 'red hippo', False)])]

拉风的咖菲猫

第一个数组中有一些括号拼写错误,我已更正它们。以下代码应该可以工作:l1=[('Rabbits', [('/home/white', 'white rabbits'), ('/home/black', 'black rabbits'), ('/home/green', 'green rabbits')]), ('Cats', [('/ans/pink', 'pink cats'), ('/ans/purple', 'purple cats'), ('/home/grey', 'grey cats')]), ('Hippos', [('/home/red', 'red hippo')]), ]l2=[('Rabbits', [('/home/black', 'black rabbits'), ('/home/green', 'green rabbits')]), ('Cats', [('/ans/pink', 'pink cats'), ('/home/grey', 'grey cats')]), ('Hippos', []) ]m=[i[1][k] for i in l2 for k in range(len(i[1]))]for i in range(len(l1)):&nbsp; &nbsp; for k in range(len(l1[i][1])):&nbsp; &nbsp; &nbsp; &nbsp; if l1[i][1][k] in m:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; l1[i][1][k]+=(True,)&nbsp; &nbsp; &nbsp; &nbsp; else:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; l1[i][1][k]+=(False,)print(l1)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python