2016-12-07 4 views
2

Python 2.7を使用すると、リストがあり、リストの各要素は(サブリスト) - タプルのリストです。私は重複したサブリストを削除したい、私は入力と期待される出力を投稿する。 setを使用しようとしましたが、listはハッシュ可能ではないというエラーがあります。誰でも良いエレガントなコードソリューションを持っていますか?ありがとう。Python 2.7一意の計算の問題

a=[[(1,2),(1,3)], 
    [(1,3),(1,2)], 
    [(1,2),(1,3)]] 

# expect output 
''' 
a=[[(1,2),(1,3)], 
    [(1,3),(1,2)]] 
''' 

答えて

1

私はあなたがセットを使用することができると思う、

a=[[(1,2),(1,3)], 
    [(1,3),(1,2)], 
    [(1,2),(1,3)]] 
unique_list = [list(x) for x in set(tuple(x) for x in a)] 
print unique_list 

以下のような出力:

[[(1, 3), (1, 2)], [(1, 2), (1, 3)]]

はここで働いREPLを参照してください - https://repl.it/EinE/1

+0

ありがとうpradeep1991singh、それはセットのために働くタプルが、セットのために働かないリストのようです。なぜ違いがあるのか​​知りたいだけなのですか?彼らはどちらも何かのリストです。 –

+0

ところで、回答を回答として記入してください、すべての助けをありがとう。 –

1

これは最も簡単な方法です。

a = [[(1,2),(1,3)], 
    [(1,3),(1,2)], 
    [(1,2),(1,3)]] 

print [list(i) for i in set(map(tuple, a))] 

[[(1, 3), (1, 2)], [(1, 2), (1, 3)]] //output

上記1には、任意のライブラリのサポートなしであり、また、元のリストの順番を確保することができません。

リストの順序を保持したい場合は、collectionsライブラリに行きます。

from collections import OrderedDict 

a = [[(1,2),(1,3)], 
    [(1,3),(1,2)], 
    [(1,2),(1,3)]] 

print map(list, OrderedDict.fromkeys(map(tuple, a))) 

[[(1, 2), (1, 3)], [(1, 3), (1, 2)]] //output

+1

を 'TypeError例外を取得します: 'tuple'オブジェクトは呼び出し可能ではない '彼の – Vinay

+1

@Vinayここに私のために働いている!なぜあなたはそのエラーを取得しているのかわかりません! – bharadhwaj

+1

ええ、私は実際にどちらかと確信していない非常に奇妙なええ。タプルは有効でなければなりません。 – Vinay