[英]How to loop through list of nested dictionaries and bring k:v pairs to 1st-level dictionary? JSON data
我正在使用嵌套字典的 JSON 列表,并尝试从第二级嵌套字典中提取字符串并使它们成为第一级 k:v 对。 示例原始数据:
data = [{"account #":"54566549", "balance":{"dollars":"684", "euros":"654"}}
{"account #":"13251462", "balance":{"dollars":"123", "euros":"111"}}
{"account #":"99871111", "balance":{"dollars":"155", "euros":"422"}}]
我想要做的是将嵌套的“余额”字典拉出来,这样就只有一个字典列表,其中包含三个 k:v 对帐户#、美元和欧元,如下所示:
[{"account #":"54566549", "dollars":"684", "euros":"654"}
{"account #":"13251462", "dollars":"123", "euros":"111"}
{"account #":"99871111", "dollars":"155", "euros":"422"}]
这一次一个工作是这样的:
data[0]['dollars'] = data[0]['balance']['dollars']
但是在循环中执行此操作会产生错误“列表索引必须是整数或切片,而不是 dict”:
for k in data:
data[k]['dollars'] = data[k]['balance']['dollars']
似乎问题是我在循环中引用了 dict('balance'),这是不允许的,但是我还能如何引用嵌套键 'dollars' 的字符串值并将其写入新键 'dollars'那是第一级词典的一部分?
在美元 + 欧元完成之后,原始的“平衡”词典也可以安全地删除吗?
您可以遍历data
并在弹出键后使用balance
键中的子字典更新每个字典:
for d in data:
d.update(d.pop('balance'))
data
变为:
[{'account #': '54566549', 'dollars': '684', 'euros': '654'},
{'account #': '13251462', 'dollars': '123', 'euros': '111'},
{'account #': '99871111', 'dollars': '155', 'euros': '422'}]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.