【发布时间】:2015-09-14 13:58:26
【问题描述】:
给定:
with open('results.csv', 'wb') as csvfile:
fieldnames = ['Name', 'Address', '#Reviews']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
writer.writerow(row)
还有一个元组列表,每个元组都包含名称、地址和#reviews,例如
[('Name2', 'Main St', 2), ('Name2', 'The Hill', 7), ('Name1', 'The Square', 14)]
我正在尝试使用writer.writerow() 将每个元组写成 csv 中的一行。我可以为每个元组创建一个字典,因此:
In [95]: for tup in z:
....: row = {"Name": tup[0], "Address": tup[1], "#Reviews": tup[2]}
....: print row
但是 (i) 它是令人费解的,更重要的是 (ii) 在创建 dict 时顺序会丢失,并且顺序与 fieldnames 的顺序不匹配。
我可以使用OrderedDict(),但这似乎有点令人费解。
实现这一点的更简洁/更短的方法是什么?
【问题讨论】:
-
行从何而来?
-
对不起,row 将代表我希望从每个 tuple/fieldNames 组合中创建的字典
-
是的,但它是什么样子的,如果你已经有一个可迭代的可迭代对象,你就不需要 DictWriter
-
@PadraicCunningham 是的,Padraic 好点。这是一个古老的例子,“当你唯一的工具是一把锤子时,你开始把每一个问题都看作是钉子。”在这种情况下,我唯一的工具是 DictWriter,而我以前没有使用过更基本的工具变体。
标签: python python-2.7 dictionary tuples ordereddictionary