Python 解析嵌套的 OrderedDict
我有一个嵌套的有序字典,里面的值是这样的:
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"])