python – 访问嵌套在字典中的值

我有一个字典,其中包含字典,也可能包含字典,例如字典.

dictionary = {'ID': 0001, 'Name': 'made up name', 'Transactions':
               {'Transaction Ref': 'a1', 'Transaction Details':
                  {'Bill To': 'abc', 'Ship To': 'def', 'Product': 'Widget A'
                      ...} ...} ... }

目前我打开包装以获取ID 001的’Bill To’,’Transaction Ref’a1如下:

if dictionary['ID'] == 001:
    transactions = dictionary['Transactions']
        if transactions['Transaction Ref'] == 'a1':
            transaction_details = transactions['Transaction Details']
            bill_to = transaction_details['Bill To']

我不禁想到这是一个有点笨重,特别是最后两行 – 我觉得下面的内容应该有效:

bill_to = transactions['Transaction Details']['Bill To']

是否有更简单的方法可以深入到嵌套字典而无需解压缩到临时变量?

解决方法:

bill_to = transactions['Transaction Details']['Bill To']

实际上有效. transactions [‘Transaction Details’]是表示dict的表达式,因此您可以在其中进行查找.对于实际程序,我更喜欢OO方法来嵌套dicts. collections.namedtuple对于快速设置一组只包含数据(并且没有自己的行为)的类特别有用.

有一点需要注意:在某些设置中,您可能希望在执行查找时捕获KeyError,并且在此设置中,这也有效,很难判断哪个字典查找失败:

try:
    bill_to = transactions['Transaction Details']['Bill To']
except KeyError:
    # which of the two lookups failed?
    # we don't know unless we inspect the exception;
    # but it's easier to do the lookup and error handling in two steps
上一篇:sql – 如何递归查找子项的所有ID?


下一篇:【iOS】UIDynamic