我有一个嵌套的有序字典字段,其中包含以下值:
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循环和其他迭代进行解析,但无法将其转到第二级。 你能告诉我如何实现这个目标吗?
答案 0 :(得分:2)
如果我正确理解了您的问题,那么您正在尝试访问amount
等于某个指定值(例如name
)的子词典的"col_1"
值。没有循环就没有直接的方法可以找到一个值,因为你正在搜索一个值,而不是一个键,但所需的代码不需要非常复杂:
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"])