是否可以使用类型def dicts_to_csv(source, output_file):
def build_row(dict_obj, keys):
return [dict_obj.get(k, "") for k in keys]
keys = sorted(set(chain.from_iterable([o.keys() for o in source])))
rows = [build_row(d, keys) for d in source]
cw = csv.writer(output_file)
cw.writerow(keys)
if PY2:
for row in rows:
cw.writerow([c.encode('utf-8') if isinstance(c, str) or isinstance(c, unicode) else c for c in row])
else:
for row in rows:
cw.writerow([c for c in row])
def write_csv(headers, rows, file):
cw = csv.writer(file)
cw.writerow(headers)
if PY2:
for row in rows:
cw.writerow([c.encode('utf-8') if isinstance(c, str) or isinstance(c, unicode) else c for c in row])
else:
for row in rows:
cw.writerow([c for c in row])
,但所有类型都相同?即
any[]
答案 0 :(得分:0)
我认为对any
类型有误解。
首先让我们定义什么是any
类型。从文档中:
我们可能需要描述在编写应用程序时不知道的变量类型。这些值可能来自动态内容,例如来自用户或第三方库。在这种情况下,我们要选择退出类型检查,并让值通过编译时检查。
因此,使用any
类型,我们告诉编译器不要检查类型,而只是通过它们。
如果要在编译时进行类型检查,则应指定所需的类型。在您的示例中,f1
和f2
的类型在编译时是已知的。
var f1 = new Array<string>(0);
f1 = ['a', 'b', 'c']; // OK
f1 = [1, 2, 'a']; // Type error
var f2 = new Array<number>(0);
f2 = [1, 2, 3]; // OK
f2 = [1, 2, 'a']; // Type error
或者做得更简单
var f3 = [1, 2, 3]; // Now f3 is of type number[]
f3 = [1, 2, 'a']; // Type error
结果:从代码中删除any[]
,您将得到所需的内容。