二次元配列で要素を比較して削除したい


python初心者です。

[code]

    A = [['apple','Apple'],
    　　　['APPLE','Apple'],
    　　　['APPLE','APPLE'],
    　　　['banana','Banana'],
    　　　['ORANGE','orange'],
    　　　['grape','Grape'],
    　　　['GRAPE','Grape']]
    
[/code]

Aのような二次元配列のリストがあります。行いたい処理は以下の通りです。

①０番目の要素を比較して、大文字と小文字の違いのみであれば同じとみなし（この場合は'apple'='APPLE'）、その要素を含むリストを丸ごと削除する  
②ただし①に当てはまっても、１番目の要素が異なれば削除しない（最後の要素は'Apple' !=
'APPLE'なので、上の２つとは異なるとみなし、削除しない）  
③残った要素を表示

[code]

    result = [['banana','Banana'],['ORANGE','orange']]
    
[/code]

このような結果が得られることを期待しています。  
どのような処理をしたらよいのかご教示お願い致します。




※ 条件②が追加されたため回答内容を全面変更

辞書(dict)を使って以下の様に書いてみました。

[code]

    from collections import defaultdict
    
    A = [
      ['apple','Apple'],
      ['APPLE','Apple'],
      ['APPLE','APPLE'],
      ['ApPlE','aPPLe'], ## added for testing, outputed to result
      ['banana','Banana'],
      ['ORANGE','orange'],
      ['grape','Grape'],
      ['GRAPE','Grape']
    ]
    
    dic = defaultdict(lambda: defaultdict(list))
    for v in A:
      dic[v[0].lower()][v[1]] += [v]
    
    print([u[0] for v in dic.values() for u in v.values() if len(u) == 1])
    ## =>
    [['APPLE', 'APPLE'], ['ApPlE', 'aPPLe'], ['banana', 'Banana'], ['ORANGE', 'orange']]
    
[/code]

**追記**

`pandas` を使うと以下の様に書けます。

[code]

    import pandas as pd
    
    df = pd.DataFrame(A)
    lst = df.assign(x=df[0].str.lower())\
            .drop_duplicates(subset=[1, 'x'], keep=False)\
            .drop('x', axis=1).values.tolist()
    
    print(lst)
    ## =>
    [['APPLE', 'APPLE'], ['ApPlE', 'aPPLe'], ['banana', 'Banana'], ['ORANGE', 'orange']]
    
[/code]




※ 条件②が追加されたため回答内容を全面変更

辞書(dict)を使って以下の様に書いてみました。

[code]

    from collections import defaultdict
    
    A = [
      ['apple','Apple'],
      ['APPLE','Apple'],
      ['APPLE','APPLE'],
      ['ApPlE','aPPLe'], ## added for testing, outputed to result
      ['banana','Banana'],
      ['ORANGE','orange'],
      ['grape','Grape'],
      ['GRAPE','Grape']
    ]
    
    dic = defaultdict(lambda: defaultdict(list))
    for v in A:
      dic[v[0].lower()][v[1]] += [v]
    
    print([u[0] for v in dic.values() for u in v.values() if len(u) == 1])
    ## =>
    [['APPLE', 'APPLE'], ['ApPlE', 'aPPLe'], ['banana', 'Banana'], ['ORANGE', 'orange']]
    
[/code]

**追記**

`pandas` を使うと以下の様に書けます。

[code]

    import pandas as pd
    
    df = pd.DataFrame(A)
    lst = df.assign(x=df[0].str.lower())\
            .drop_duplicates(subset=[1, 'x'], keep=False)\
            .drop('x', axis=1).values.tolist()
    
    print(lst)
    ## =>
    [['APPLE', 'APPLE'], ['ApPlE', 'aPPLe'], ['banana', 'Banana'], ['ORANGE', 'orange']]
    
[/code]

