2012-02-14 9 views
0
rare = (["word1","word4","word5"]) 
freq = (["word1","word2","word3"]) 
unique = rare.intersection(freq) 
print unique 

エラー:はAttributeError:「リスト」オブジェクトが属性「交差点」を持っていない初心者パイソン積集合エラー

は私が正しくセットを作成していないのですか?ドキュメントの例に似ていますが、通常のメソッドを使うことはできません。

セットを作成するための適切な構文は、リストであればどのようなものですか?

+1

を使用していますか? – wim

答えて

4

この方法では、セットを作成するのではなく、通常のリストを作成します。

rare = set(["word1","word4","word5"]) 
freq = set(["word1","word2","word3"]) 

はたぶん、あなたはタプルとのセットが混乱している:set機能を使用してください。タプルは括弧の間の式を使用して作成されていますが、少なくともコンマ提供する必要があります。

("this", "is", "a", "tuple") 
("anotherone",) 

タプルを不変のリストのようですが、彼らはセットじゃありません。

+0

ありがとう、私はfrickin 'クレイジー運転していた。 – some1

+1

うれしかったよ!最近のPythonを使用している場合は、Tavian Barnesの答えも参照してください。より簡潔です。 – mgibsonbr

3

あなたはこの希望:セットリテラルの構文は限りのPython 2.7のようにバックポートされていることを

rare = {"word1", "word4", "word5"} 
freq = {"word1", "word2", "word3"} 
unique = rare.intersection(freq) 
print(unique) 

注意を。あなたは2.7にしている場合は

+0

@JoelCornett:どうしてですか?それはうまくコンパイルされ、うまく実行され、OPが望むものを実行します。 –

+2

@MichaelFoukarakis私はそれがPythonのバージョンに依存すると思います。例えば、2.5はそれを受け入れません、2.7は受け入れます。 – mgibsonbr

+0

それは本当です。それを明確にするために答えを編集しました。 –

2

、これは交差点のためのより多くの神託の構文は、なぜあなたはユニークな非ユニークな要素を呼び出しているset operators:

>>> import sys; print sys.version 
2.7.1+ (r271:86832, Apr 11 2011, 18:13:53) 
[GCC 4.5.2] 
>>> rare = {"word1", "word4", "word5"} 
>>> freq = {"word1", "word2", "word3"} 
>>> rare & freq 
set(['word1'])