亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

檢查元組數組中的匹配值 - python

檢查元組數組中的匹配值 - python

江戶川亂折騰 2023-07-11 10:36:29
好的,我有兩個元組數組。我想檢查數組二(在其子數組中)是否具有數組一中的匹配元素。如果是這樣,我想將 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
查看完整描述

2 回答

?
至尊寶的傳說

TA貢獻1789條經驗 獲得超10個贊

看來您在輸入數據中使用括號時存在一些細微的不一致,我冒昧地糾正了這些不一致。完成此操作后,為了真正解決問題,我認為將第二個數組轉換為字典以便于包含測試是有意義的。這給出:


from pprint import pprint


array_1 = [('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')])] 



array_2 = [('Rabbits', [('/home/black', 'black rabbits'),

                        ('/home/green', 'green rabbits')]), 

           ('Cats', [('/ans/pink', 'pink cats'),

                     ('/home/grey', 'grey cats')]),

           ('Hippos', [])]


d = dict(array_2)


out = []

for species, tups in array_1:

    lst = []

    for tup in tups:

        if tup in d[species]:

            lst.append(tup + (True,))

        else:

            lst.append(tup + (False,))

    out.append((species, lst))


pprint(out)

輸出:


[('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)])]


查看完整回答
反對 回復 2023-07-11
?
拉風的咖菲貓

TA貢獻1995條經驗 獲得超2個贊

第一個數組中有一些括號拼寫錯誤,我已更正它們。


以下代碼應該可以工作:


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)):

    for k in range(len(l1[i][1])):

        if l1[i][1][k] in m:

            l1[i][1][k]+=(True,)

        else:

            l1[i][1][k]+=(False,)

print(l1)


查看完整回答
反對 回復 2023-07-11
  • 2 回答
  • 0 關注
  • 152 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號