对 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__r
是 record
中的一个键。
我想你想要的是:
List_Results = [[record['Id'], record['Order_Type__c'], record['Opportunity__r']['Approval_Date__c']] for record in query_results['records']]
我正在通过 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__r
是 record
中的一个键。
我想你想要的是:
List_Results = [[record['Id'], record['Order_Type__c'], record['Opportunity__r']['Approval_Date__c']] for record in query_results['records']]