2014-01-22 143 views
0

我想知道什麼是最好的方式來創建列表,同時避免重複。如何在避免重複的情況下創建列表?

我有一些數據在mysql中哪些字段包含產品類型。

例如:其即時通訊瞄準

id ------- category 

1 -------- food, drink, vege 

2 -------- food, drink 

3 -------- vege, baby goods 

4 -------- fish 

輸出是:

['food','drink','vege','baby goods','fish'] 

(請注意,爲了讓我無所謂)

數據集有超過40,000記錄,以便檢查它手動肯定不是一種選擇...

如果你願意,我將不勝感激ld給我留言或建議來實現這一點。

+0

你說你想創建一個字符串,但你給出的輸出是一個列表。你想要一個字符串還是一個列表? – Kevin

+0

我的不好。我試圖做一個清單。 我已修復原始內容。 謝謝! – user3074823

+0

「避免重複......順序對我無關」基本上是說你想要一個'set'而不是'list'。當然,如果你還不知道Python附帶的基本集合類型,你就不會知道。但是您可能需要瀏覽本教程中的[Data Structures](http://docs.python.org/3/tutorial/datastructures.html)以瞭解一個想法。 – abarnert

回答

5

Python集不允許重複。所以,你可以構建一套獨特的類別,使用設定的理解,這樣的

unique_categories = {item.strip() for row in cur for item in row[1].split(",")} 

例如,

a = "food, drink, vege" 
print {item.strip() for item in a.split(",")} 

輸出

set(['food', 'drink', 'vege']) 

可以遍歷一組,像一個列表。但是,如果你想將它轉換成一個列表以後,你可以使用list功能這樣

unique_categories = list(unique_categories) 
+0

喜感謝,我已經試過代碼: unique_categories = {項目在cursor.fetchall()一行項目行[0]} 它給了我,像這樣的輸出, 集([ '','C','B','E','D','G','F','I','K','J','M' ,'L','O', 'N','P','S','R','T','W','V','Y','a','c',' 'b','e','d','g','f','i', 'h','k','m','l','o','n',' q','p','s','r','u','t','w','v','y','z']) 它真的很接近,但我尋求的方式在「單詞塊」中完成。如果你知道我的意思。 – user3074823

+0

當你在'cur.fetchall()]'中打印[row [1]行時,你會得到什麼? – thefourtheye

+0

@ user3074823:這是因爲'row [0]'是一個字符串,它只是一個單字母字符串的序列。在第四個回答中,他使用'row [1] .split(「,」)',這將是一個字符串列表。 '分裂'是那裏的關鍵。如果你只需要每個'row [0]',只需在cursor.fetchall()}'中爲行{{row [0]]。 – abarnert

0

只要改變數據類型來設置它的工作

例如

x = ['food','drink','vege','baby goods','food'] 

如果你想要下面的輸出

x = ['food','drink','vege','baby goods'] 

就這樣做

x = set(x) 

它做

在組不存在重複的成員。

相關問題