2015-07-11 160 views
1

我试过谷歌 - 但我一直没能找到与字典值的词典一起工作的解决方案。让我稍微解释一下。Python 3-将字典值与字典值写入到CSV文件

我有一张机票代码字典,每个机票代码是另一个字典,其中包含'姓名'和'已兑换',名称是机票所有人,并且兑换机票是否已兑换。数据从名为TicketCodes的csv文件加载,该文件包含1000行此数据。我有一个系统会截断准备写入的文件,但是我找到的写入CSV的解决方案不起作用。我很抱歉,如果这是重复的 - 我可能没有足够努力搜索。如果是,请您将我链接到解决方案?非常感谢你!

+1

请出示您已经尝试的代码,你得到了错误。 –

+1

首先关注我上面的评论。之后,查询我的水晶球,我认为数据结构的适当序列化格式可能是JSON(您的字典的值是字典)。 –

+0

门票词典?所以它其实是一个集合?如果是这样,关键是什么,你需要存储它?最好给一个样本入口完成。 – tutuDajuju

回答

0

JSON将是写出Python字典数据更好的格式。但是,如果您的所有字典都具有相同的密钥,那么您可以使用字典密钥作为列名格式化CSV文档。

例如:

# Assuming the data is a list of dictionaries 
the_data = [{'col1': 'data1', 'col2': 'data2'}, 
      {'col1': 'data3', 'col2': 'data4'}, 
      {'col1': 'data5', 'col2': 'data6'}, 
      {'col1': 'data7', 'col2': 'data8'}] 

# Build a list of the column names. 
# This could be done with list(the_data[0].keys()) 
# But then you have no control over the column ordering 
column_names = ['col1', 'col2'] 

# Print out column names 
print(",".join(column_names)) 

# Print out data 
for row in the_data: 
    print(",".join([row[field] for field in column_names])) 

输出:

col1,col2 
data1,data2 
data3,data4 
data5,data6 
data7,data8 

注:在我的例子我刚刚打印出来的CSV数据,但是这将是微不足道的这个数据写入一份文件。

而且,写the_data以JSON格式是因为这样做以下简单:

>>> import json 
>>> json.dumps(the_data) 

'[{"col2": "data2", "col1": "data1"}, {"col2": "data4", "col1": "data3"}, {"col2": "data6", "col1": "data5"}, {"col2": "data8", "col1": "data7"}]' 
+0

''你无法控制列排序“'不正确,这可以通过从集合import OrderedDict'完成,并为每个'{}'创建一个OrderedDict()。为列表的每个元素创建一个OrderedDict(),然后添加几行代码来放置键和值 – ytpillai

+0

@ytpillai你是对的,但原来的问题确实说这个词典是从其他地方传给他们的,他们可能无法控制数据类型。还有一个列名称列表可以让你轻松写出一个子集。 –

+0

他们如何控制字典? – ytpillai