首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问simple-salesforce返回的内部有序字典

访问simple-salesforce返回的内部有序字典
EN

Stack Overflow用户
提问于 2019-12-06 00:33:40
回答 2查看 430关注 0票数 0

我正在使用simple-salesforce通过Python查询salesforce。我的查询返回以下格式的ordereddict

代码语言:javascript
复制
OrderedDict([('totalSize', 1), ('done', True), ('records', [OrderedDict([('attributes', OrderedDict([('type', 'Case'), ('url', 'www.blah.com')])), ('Number', '6904'), ('Severity', 'P1'), ('Product__c', 'd231'), ('Status', 'Available'), ('Case_Comments__r', OrderedDict([('totalSize', 1), ('done', True), ('records', [OrderedDict([('attributes', OrderedDict([('type', 'Comment__c'), ('url', 'www.blah.com')])), ('CreatedDate', '2019-11-05T12:10:06.000+0000'), ('Text__c', 'dummy text'), ('Created_By_Name', 'TEST USER')])])]))])])])

我想提取特定的数据,但在访问内部有序的字典时遇到问题。例如,我可以通过执行以下操作来获取'Number‘和'Severity’

代码语言:javascript
复制
list1 = [(record['Number'], record['Severity']) for record in data['records']]

但我也需要访问'Comment_c',我已经尝试了下面的方法,但它失败了。

代码语言:javascript
复制
list1 = [(record['Number'], record['Severity'], record['Case_Comments__r']['records']['Text__c']) for record in data['records']]

失败并显示"TypeError:列表索引必须是整数或切片,而不是字符串“

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-12-06 00:50:48

如您所见,record['Case_Comments__r']['records']OrderedDict的列表:

代码语言:javascript
复制
('records', [OrderedDict(...), ...])

因此,不可能使用record['Case_Comments__r']['records']['Text__c']这样的字符串对该列表进行索引-您需要遍历该列表并从每个OrderedDict提取数据

代码语言:javascript
复制
..., record['Severity'], [comment['Text__c'] for comment in record['Case_Comments__r']['records']]
票数 0
EN

Stack Overflow用户

发布于 2019-12-06 01:36:22

这是从simple-salesforce查询结果中解析OrderedDict的另一种方法,它允许您在搜索的是None时设置默认值。

代码语言:javascript
复制
def get_field_data_from_salesforce_object(sf_session, field, default="some_default"):
    field_query = f"Select {field} FROM Case WHERE Id = 'some-id'"
    field_data = sf_session.query(field_query)

    for k, v in field_data.items():
        if k == "records":
            for item in v:
                field_key = item.get(field)

                if field_key is None:
                    if default is not None:
                        field_key = default
                    else:
                        field_key = "(Not provided)"
    return field_key
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59199550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档