我的输入是一个.csv文件,碰巧有标题。
我想用一句简洁的话,比如:

mydict = {custID:[parser.parse(str(date)), amount]
          for transID, custID, amount, date in reader}

从输入创建字典。然而,数据并非完全“干净”。我想检查每一行数据是否是我希望字典映射的数据类型。
类似于:
mydict = {if custID is type int custID:[parser.parse(str(date)), amount]
          for transID, custID, amount, date in reader}

会是一个很好的解决方案,但是,唉,它不起作用。
在简化输入处理的同时保留短字典构造器的任何建议?

最佳答案

我认为你是在正确的轨道和过滤字典理解应该在这里工作:

mydict = {custID: [parser.parse(str(date)), amount]
          for transID, custID, amount, date in reader
          if isinstance(custID, int)}

在这种情况下,您可以忽略custID不是整数类型的行。
另外,如果custID不是唯一的,事情就会出错。如果custIDs可以重复,您可能需要切换到defaultdict(list)集合,收集按custID分组的日期+数量对。

关于python - 处理输入到Python字典中的csv时如何跳过行或检查单个构造行中的数据类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32813466/

10-10 14:09