Har*_*arv 14 python dictionary
我正在使用DictReader()读取csv文件.该函数返回一个字典,其中标题项是键,单元格是值.很酷.
但我正在尝试考虑数据可能与我预期不同的行.在那种情况下(我正在捕获一个ValueError异常),我希望那些"可疑"的行进入一个单独的字典,进行手动处理.
我的问题是:因为我的第一个字典(由DictReader返回的对象)正确设置了它的所有键,我如何只将键复制到我的第二个字典中,我想要的只是一个可疑行的字典,要手动处理?
我一直在玩dict.fromkeys()这样一段时间了,而我现在却无处可去.HALP!
编辑:粘贴我的一些错误代码.要躲在我的代码的耻辱中去.不要评判我!;-)
unsure_rows = dict.fromkeys(dict(csv_reader).keys(), [])
for row in csv_reader:
# if row['Start Time'] != 'None':
try:
if before_date > strptime(row['Start Time'], '%Y-%m-%d %H:%M:%S') > after_date:
continue
except ValueError:
unsure_rows += row
Run Code Online (Sandbox Code Playgroud)
ValueError:字典更新序列元素#0的长度为13; 2是必需的
che*_*ken 17
你很亲密 尝试:
dict.fromkeys(my_csv_dict.keys(),[])
这将使用您从CSV文件解析的相同键初始化字典,并且每个字典将映射到一个空列表(我假设您将附加您的可疑行值).
试试这个.(这里有一些更微妙的变化都是必要的,比如在开始阅读CSV之前如何不能初始化unsure_rows.)
unsure_rows = None
for row in csv_reader:
# if row['Start Time'] != 'None':
try:
if before_date > strptime(row['Start Time'], '%Y-%m-%d %H:%M:%S') > after_date:
continue
except ValueError:
if not unsure_rows:
# Initialize the unsure rows dictionary
unsure_rows = dict.fromkeys(csv_reader.fieldnames,[])
for key in unsure_rows:
unsure_rows[key].append(row[key])
Run Code Online (Sandbox Code Playgroud)
你有没有尝试过:
newd = dict.fromkeys(origdict)
Run Code Online (Sandbox Code Playgroud)
?如果那对您不起作用,请添加有关您遇到的错误的更多详细信息。