1

我有一个具有以下值的嵌套有序字典字段:

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 循环和其他迭代进行解析,但无法将其提升到第二级。你能建议我如何实现这一目标的方法吗?

4

1 回答 1

3

如果我正确理解您的问题,您正在尝试访问等于某个指定值(例如)amount的子字典的值。没有循环就没有直接的方法可以找到它,因为您正在搜索一个值,而不是一个键,但是所需的代码不需要非常复杂:name"col_1"

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

这将打印它找到的第一个匹配项(您可以做任何您想做的事情,而不是打印,这对于示例代码来说似乎最简单)。如果有多个 sub-dict 可以匹配,并且您想打印"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"])
于 2014-04-28T08:07:44.680 回答