J'interroge Salesforce via le paquet python, Simple_Salesforce.
Les résultats sont retournés sous forme de OrderdDict.
Je voudrais convertir les enregistrements en une liste simple de listes (bien que dans l'échantillon il y ait seulement 1 enregistrement). C'est très facile à faire, sauf dans cet exemple, le champ Approval_Date__c
provient d'une table liée via une jointure SOQL. Cela semble être renvoyé sous la forme d'un OrderedDict imbriqué. Je suis incapable de générer la liste avec cette valeur incluse. Je reçois KeyError: 'Opportunity__r'
Compréhension de liste pour un dictionnaire imbriqué ordonné en liste Python
Mon code:
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
Résultat souhaité:
[[u'a4T13000000sdfd', u'Standard', u'2014-12-31']]
simple conversation hors du champ de la OrderedDict imbriqué pour le prouver fonctionne:
List_Results = [[record['Id'], record['Order_Type__c']] for record in query_results['records']]
simple, je ne faisais que me prêter à confusion. Bonne réponse – user2242044