我查找了“嵌套dict”和“嵌套list”,但这两种方法都有效
我有一个结构如下的python对象:
[{
'id': 'productID1', 'name': 'productname A',
'option': {
'size': {
'type': 'list',
'name': 'size',
'choices': [
{'value': 'M'},
]}},
'variant': [{
'id': 'variantID1',
'choices':
{'size': 'M'},
'attributes':
{'currency': 'USD', 'price': 1}}]
}]
我需要输出以下扁平结构的csv文件:
id, productname, variantid, size, currency, price
productID1, productname A, variantID1, M, USD, 1
productID1, productname A, variantID2, L, USD, 2
productID2, productname A, variantID3, XL, USD, 3
我尝试了这个解决方案:Python: Writing Nested Dictionary to CSV 或者这个:From Nested Dictionary to CSV File
我去掉了[]
周围和data
内部的[]
,例如,我使用了来自2的这个代码片段,并根据我的需要对其进行了修改。IRL我无法摆脱[]
,因为调用API时得到的格式很简单
with open('productdata.csv', 'w', newline='', encoding='utf-8') as output:
writer = csv.writer(output, delimiter=';', quotechar = '"', quoting=csv.QUOTE_NONNUMERIC)
for key in sorted(data):
value = data[key]
if len(value) > 0:
writer.writerow([key, value])
else:
for i in value:
writer.writerow([key, i, value])
但是输出是这样的:
"id";"productID1"
"name";"productname A"
"option";"{'size': {'type': 'list', 'name': 'size', 'choices': {'value': 'M'}}}"
"variant";"{'id': 'variantID1', 'choices': {'size': 'M'}, 'attributes': {'currency': 'USD', 'price': 1}}"
有人能帮我吗
提前谢谢
列表索引必须是整数而不是字符串
下面是python列表的一个可视化示例:
0
、1
、2
都是“指数”"carrot"
,"broccoli"
等等。。。都被称为“值”本质上,python
list
是一台具有整数输入和任意输出的机器将python列表视为一个黑匣子:
5
,进入框中李>"cucumber"
是从盒子里出来的您遇到了一个错误:
TypeError: list indices must be integers or slices, not str
有各种各样的解决办法
将字符串转换为整数
将字符串转换为整数
所以是的。。。。只要字符串标记看起来像数字(例如
"456"
或"7"
),就可以使用该方法整数类构造函数
int()
不是很聪明例如,
x = int("3 ")
将产生一个错误您可以尝试
x = int(strying.strip())
删除前导和尾随空格字符使用允许键为字符串的容器
很久以前,在电子计算机出现之前,世界上有各种各样的集装箱:
在计算机编程中,还有各种类型的“容器”
如果不想,您不必使用
list
作为容器在一些容器中,键(也称为索引)可以是字符串,而不是整数
在python中,与列表类似但键/索引可以是字符串的标准容器是
dictionary
如果要使用字符串而不是整数索引到容器中,请使用
dict
而不是list
以下是python
dict
的一个示例,该python以状态名称作为输入,以状态删节作为输出:以下是对我有效的最终解决方案:
具有以下输出:
这正是我想要的
实际上,我可以迭代这个列表并创建自己的子列表,例如变体列表
但是输出总是迭代的最后一项,因为我总是用update()覆盖新的_列表
相关问题 更多 >
编程相关推荐