2014-01-22 141 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) 

它做

在组不存在重复的成员。

相关问题