完全是Python noob,可能遗漏了一些明显的东西。我到处找遍了,还没有找到解决办法,所以我想我应该寻求一些帮助。在
我正在尝试编写一个函数,它将从一个大的csv文件构建一个嵌套字典。输入文件的格式如下:Product,Price,Cost,Brand,
blue widget,5,4,sony,
red widget,6,5,sony,
green widget,7,5,microsoft,
purple widget,7,6,microsoft,
等等。。。在
我需要的输出字典如下所示:
^{pr2}$
但很明显,许多不同的品牌包含不同的产品。在输入文件中,数据是按品牌名称的字母顺序排序的,但我知道,一旦DictReader执行,它就会变得无序,所以我肯定需要一种更好的方法来处理重复数据。所写的if语句是多余的和不必要的。在
以下是到目前为止我得到的不起作用的无用代码:def build_dict(source_file):
projects = {}
headers = ['Product', 'Price', 'Cost', 'Brand']
reader = csv.DictReader(open(source_file), fieldnames = headers, dialect = 'excel')
current_brand = 'None'
for row in reader:
if Brand != current_brand:
current_brand = Brand
projects[Brand] = {Product: {'Price': Price, 'Cost': Cost}}
return projects
source_file = 'merged.csv'
print build_dict(source_file)
当然,我已经导入了文件顶部的csv模块。在
最好的办法是什么?我觉得自己走得太远了,但是关于从CSV创建嵌套dict的信息非常少,而且现有的示例都非常具体,而且往往不会详细说明解决方案实际工作的原因,因此作为一个刚接触Python的人,很难得出结论。在
另外,输入的csv文件通常没有标题,但是为了获得这个函数的工作版本,我手动插入了一个标题行。理想情况下,会有一些代码来分配标题。在
如有任何帮助/指导/建议,我们将不胜感激,谢谢!在