【发布时间】:2015-03-16 21:25:32
【问题描述】:
我尝试从两个 json 文件创建一个 csv 文件。
第一个 json 文件:
{ "attributes": [
{
"code": "ean",
"description": "the ean",
"example": null,
"hierarchy_code": null,
"label": "ean",
"required": true,
"type": "TEXT",
"type_parameter": null,
"values": null,
"values_list": "some value"
},
...
第二个json文件:
{
"code": "the code",
"label": "shoes",
"values": [
{
"code": "COL_100",
"label": "white"
},
{
"code": "COL_101",
"label": "blue"
},
...
我需要从第一个 json 中的键“values_list”中获取值。 使用该键,我可以从第二个 json 中获取一个列表(它返回随机数量的值)并获取“标签”键值。
我的发现是制作两个这样的循环:
for att in first_json['attributes']:
csv_dict[att['values_list']] = []
for val in second_json['values']:
csv_dict[att['values_list']].append(val['label'])
这会创建一个像这样的字典:
{'label1': [val1, val2, val3],
'label2': [otherval1, otherval2, ...],
...}
我的问题:
使用我的“csv_dict”字典,我如何创建一个结构如下的 csv:
label1 | label2 | ... | labeln
val1 | otherval1 | ... | valn
val2 | otherval2 | ... |
val3 | ... | ... |
我的实际字典似乎不适合通常使用的 csv.Dictwriter() 方法。
https://docs.python.org/2/library/csv.html#csv.DictWriter
我尝试像这样使用 zip 功能:
for elem in zip(*labels.values()):
data.append(";".join([otherelm for otherelem in elem]))
希望手动创建一个 csv 文件,但我的尝试失败了。
感谢您的帮助。
【问题讨论】:
-
您能否更具体地说明您的最终结果应该是什么样子?使用
dict[att['values_list']],您将多次覆盖同一个键(att['values_list'])的值,这是故意的吗?并且不要使用dict作为变量名,因为它是 Python 中字典类的名称。 -
目前还不清楚“像这样的 csv:label1 label2 val1 otherval1 val2 otherval2 val3”是什么意思。请提供更多信息。
-
我更新了我的解释。我希望它会更清楚。
标签: python json csv dictionary