Python 解析嵌套的 OrderedDict

1 投票
1 回答
3317 浏览
提问于 2025-04-18 04:20

我有一个嵌套的有序字典,里面的值是这样的:

OrderedDict
([
 ('activateable', False),
 ('fields', 
    [OrderedDict ([ ('autoNumber', False),  ('name', ‘col_1’),  (‘amount’, ‘10’)]),
    [OrderedDict ([ ('autoNumber', False),  ('name', ‘col_2’),  (‘amount’, ‘10’)])
 )
 ('pin', False)
])

我想要获取 col_1 和 col_2 对应的金额值。我试过用普通的 for 循环和其他方法来解析,但就是无法到达第二层。你能给我推荐一种方法,让我能做到这一点吗?

1 个回答

3

如果我理解你的问题没错的话,你是想要获取一个子字典中,name等于某个特定值(比如"col_1")的amount值。要找到这个值,没有简单的方法可以直接做到,因为你是在找一个值,而不是一个键,所以需要用到循环。不过,所需的代码其实并不复杂:

for field in top_level_dict["fields"]:
    if field["name"] = "col_1":
        print(field["amount"])
        break

这段代码会打印出它找到的第一个匹配项(你可以做其他事情,而不仅仅是打印,这只是为了举个例子)。如果有多个子字典可以匹配,而你想要打印所有的"amount"值,你可以去掉break语句。

如果你有多个值需要搜索,可能需要把你的数据结构转换成一种更高效的查找方式。例如,这里有一些基本代码,可以创建一个新的字典,将你的name值映射到amount值(我假设所有的名字都是唯一的):

# set up a better mapping
name_amount_dict = {field["name"]: field["amount"] for field in top_level_dict["fields"]}

# use it to look up a value we want
print(name_amount_dict["col_1"])

撰写回答