繁体   English   中英

Python - 创建一组或一组集合?

[英]Python - Create a list of sets or set of sets?

对于我正在审核的课程,需要帮助完成家庭作业。 练习是关联规则挖掘,我非常坚持组织数据的其中一个步骤。

我有一串由换行符分隔的数据(每行代表客户购买的商品):

rawText = 
"""fruit, bread, butter, soup
   fruit, yogurt, coffee
   whole milk, cream cheese, meat, vegetables"""

如何将这些数据放入一个看起来像这样的集合(这是一个集合列表?):

[{‘fruit’, ‘bread’, ‘butter’, soup’},
 {‘fruit’, ‘yogurt’, ‘coffee’},
 {'whole milk', 'cream cheese', 'meat', 'vegetables'}
]

我试图在行尾打破字符串:

names_list = [y for y in (x.strip() for x in rawText.splitlines()) if y]
my_set = set()
for i in names_list:
    my_set.add(i)

这显然不起作用。 也许我会以错误的方式解决这个问题?

要获取每个集合的集合列表,其中包含来自给定行的逗号分隔的单词:

names_list = [set(line.strip().split(', ')) for line in raw_text.splitlines()]

你很近但有两个问题:

  • 您不是将每行上的各个项目拆分为单独的字符串
  • 您实际上并没有为每行中的项目设置一组

鉴于此,这应该可以解决您的问题

names_list = [set(line.strip().split(',')) for line in raw_text.splitlines()]

作为替代方案,您可以使用csv模块来处理行拆分,空格和分隔符:

import csv
from io import StringIO

x = StringIO("""fruit, bread, butter, soup
fruit, yogurt, coffee
whole milk, cream cheese, meat, vegetables""")

with x as fin:
    reader = csv.reader(fin, skipinitialspace=True)
    res = list(map(set, reader))

结果

print(res)

[{'bread', 'butter', 'fruit', 'soup'},
 {'coffee', 'fruit', 'yogurt'},
 {'cream cheese', 'meat', 'vegetables', 'whole milk'}]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM