如何在避免重复的同时创建列表?

use*_*823 0 python string join append mysql-python

我想知道在避免重复的同时创建列表的最佳方法是什么.

我在mysql中有一些数据包含产品类型.

例如:

id ------- category

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

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

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

4 --------   fish
Run Code Online (Sandbox Code Playgroud)

我瞄准的输出是:

['food','drink','vege','baby goods','fish']
Run Code Online (Sandbox Code Playgroud)

(请注意订单对我来说无关紧要)

数据集有超过40,000条记录,因此手动检查肯定不是一种选择......

如果你能给我一个说明或建议,我将不胜感激.

the*_*eye 5

Python集不允许重复.因此,您可以使用set comprehension构建一组唯一的类别,就像这样

unique_categories = {item.strip() for row in cur for item in row[1].split(",")}
Run Code Online (Sandbox Code Playgroud)

例如,

a = "food, drink, vege"
print {item.strip() for item in a.split(",")}
Run Code Online (Sandbox Code Playgroud)

产量

set(['food', 'drink', 'vege'])
Run Code Online (Sandbox Code Playgroud)

您可以像列表一样迭代集合.但是,如果您想稍后将其转换为列表,则可以使用list此类函数

unique_categories = list(unique_categories)
Run Code Online (Sandbox Code Playgroud)