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

錯誤:AttributeError的:「名單」對象有沒有屬性「交集」初學者蟒蛇路口設置錯誤

我不是正確創建組?他們看起來像文檔中的例子 - 但我似乎無法使用正常的設置方法。

如果這些是列表,創建集合的正確語法是什麼?

+1

交叉路口更Python語法你爲什麼調用非唯一元素獨特之處? – wim 2012-02-14 07:08:47

回答

4

這樣你就不會創建集合,只是定期列表。使用set功能:

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

也許你混淆套與元組。元組與括號之間的表達式創建的,但你必須提供至少一個逗號:

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

元組是不可變的一樣名單,但他們不是套。

+0

謝謝你,這讓我瘋狂。 – some1 2012-02-14 06:56:29

+1

很高興幫助!如果您使用的是最近的Python,請參閱Tavian Barnes的答案,因爲它更簡潔。 – mgibsonbr 2012-02-14 07:05:03

3

你想這樣的:

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

注意,對於集文字的語法已經儘可能的Python 2.7回遷。

+0

@JoelCornett:爲什麼不呢?它編譯得很好,它執行得很好,它執行OP所要的。 – 2012-02-14 06:58:43

+2

@MichaelFoukarakis我認爲這取決於Python版本。例如,2.5不接受,2.7。 – mgibsonbr 2012-02-14 07:01:31

+0

這是真的;編輯答案澄清這一點。 – 2012-02-14 07:35:19

2

如果你在2.7,這是使用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'])