簡體   English   中英

Python檢查項目是否在某個索引的嵌套列表中

[英]Python check if an item is in a nested list at a certain index

我生成了一個唯一對嵌套列表,其中每個項目都成對存在。

my_list = [['item1', 'item2'],
           ['item3', 'item4'],
           ['item5', 'item6'],
           ['item7', 'item8'],
           ['item1', 'item9'],
           ['item3', 'item10'],
           ['item5', 'item11'],
           ['item7', 'item12'],
           ['item13', 'item2'],
           ['item14', 'item4'],
           ['item15', 'item6'],
           ['item16', 'item8'],
           ['item13', 'item9'],
           ['item14', 'item10'],
           ['item15', 'item11'],
           ['item16', 'item12']]

但是要求是每個項目在每個索引處只需要存在一次。 因此,例如item1應該一次出現在子列表的索引0處,而第二次出現在子列表的索引1中成對出現,反之亦然。

我嘗試使用帶條件的any()來檢查該項目是否在嵌套列表中存在,但無法弄清楚如何檢查它是否已經存在於子列表的索引中,在這種情況下,我將反轉嵌套列表。

for pair in my_list:
    if any(item in sublist for sublist in my_list):
        pair.reverse()

我假設如果該列表中的第一項或最后一項存在,則您不想輸出該列表。 我只是將每個索引添加到2個不同的列表中,看它是否存在並創建輸出。 必須有一個更好的pythonic解決方案。

new0=[]
new1=[]
for i in my_list:
    if i[0] not in new0 and i[1] not in new1:
        print(i)
        new0.append(i[0])
        new1.append(i[1])

問題在於您沒有任何“已經”列表可供參考。 您需要隨時進行構建。 這是一個非常簡單的示例解決方案:

# Keep separate lists for each position.
good_list_0 = []
good_list_1 = []

for pair in my_list:
    # If either element already exists at that index ...
    if pair[0] in good_list_0 or \
       pair[1] in good_list_1:

        # ... reverse the pair
        a, b = pair[1], pair[0]
    else:
        a, b = pair

    # add the values to the appropriate index lists
    good_list_0.append(a)
    good_list_1.append(b)

# Zip the two lists back together.
good_list = list(zip(good_list_0, good_list_1))

for pair in good_list:
    print(pair)

輸出:

('item1', 'item2')
('item3', 'item4')
('item5', 'item6')
('item7', 'item8')
('item9', 'item1')
('item10', 'item3')
('item11', 'item5')
('item12', 'item7')
('item2', 'item13')
('item4', 'item14')
('item6', 'item15')
('item8', 'item16')
('item13', 'item9')
('item14', 'item10')
('item15', 'item11')
('item16', 'item12')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM