Python解析嵌套的Ordereddict

时间:2014-04-26 08:44:24

标签: python parsing ordereddictionary

我有一个嵌套的有序字典字段,其中包含以下值:

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 个答案:

答案 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"])