对 Python 列表的有序嵌套字典的列表理解

List Comprehension for Ordered Nested Dictionary to Python List

我正在通过 python 包查询 Salesforce,Simple_Salesforce. 结果以 OrderdDict. 形式返回 我想将记录转换为简单的列表列表(尽管在样本中只有 1 条记录)。这很容易做到,除了在本例中,字段 Approval_Date__c 通过 SOQL 连接来自相关的 table。这似乎作为嵌套的 OrderedDict 返回。我无法生成包含此值的列表。我得到 KeyError: 'Opportunity__r'

我的代码:

import collections
orderedDict = collections.OrderedDict()
from collections import OrderedDict
query_results = OrderedDict([(u'totalSize', 1), (u'done', True), (u'records', [OrderedDict([(u'attributes', OrderedDict([(u'type', Orders__c'), (u'url', u'someurl')])), (u'Id', u'a4T13000000sdfd'), (u'Order_Type__c', u'Standard'), (u'Opportunity__c', u'006130000145451245'), (u'Opportunity__r', OrderedDict([(u'attributes', OrderedDict([(u'type', u'Opportunity'), (u'url', u'someurl1')])), (u'Approval_Date__c', u'2014-12-31')]))])])])


List_Results = [[record['Id'], record['Order_Type__c'], [[record['Approval_Date__c']] for record in query_results['Opportunity__r']]] for record in query_results['records']]
print List_Results

期望的结果:

[[u'a4T13000000sdfd', u'Standard', u'2014-12-31']]

从嵌套的 OrderedDict 中排除该字段以证明其有效的简单对话:

List_Results = [[record['Id'], record['Order_Type__c']] for record in query_results['records']]

您遇到密钥错误是因为您试图在 query_results 中查找 Opportunity__r,其中没有 Opportunity__r 密钥。相反,Opportunity__rrecord 中的一个键。

我想你想要的是:

List_Results = [[record['Id'], record['Order_Type__c'], record['Opportunity__r']['Approval_Date__c']] for record in query_results['records']]