繁体   English   中英

如何遍历嵌套字典列表并将 k:v 对带到一级字典? JSON 数据

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM