我的输入是一个.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
不是唯一的,事情就会出错。如果custID
s可以重复,您可能需要切换到defaultdict(list)
集合,收集按custID
分组的日期+数量对。关于python - 处理输入到Python字典中的csv时如何跳过行或检查单个构造行中的数据类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32813466/