gpt4 book ai didi

python - 将 OrderedDict 解析为 Python 列表

转载 作者:太空宇宙 更新时间:2023-11-04 10:30:52 25 4
gpt4 key购买 nike

我正在使用一个名为 Simple Salesforce 的模块从我的 Salesforce 数据库中查询数据。数据作为 OrderedDict 返回。我如何将其解析为简单的 python 列表。

查询时返回的前两个条目的示例:

OrderedDict([
(u'totalSize', 418),
(u'done', True),
(u'records', [
OrderedDict([
(u'attributes', OrderedDict([
(u'type', u'Case'),
(u'url', u'/services/Case/11111')
])),
(u'Id', u'11111'),
(u'Subject', u'Case 1')
]),
OrderedDict([
(u'attributes', OrderedDict([
(u'type', u'Case'),
(u'url', u'/services/Case/2222222')
])),
(u'Id', u'2222222'),
(u'Subject', u'Case 2')
]),
#...
])
])

我不确定我的术语列表是否正确,但我希望它是一个多维表,其形式为:

[('11111', 'Case 1'),('2222222', 'Case 2')]

最终,我想将此列表与另一个列表进行内部连接。这是设置数据的最佳方式吗?

所以我想内部连接的两个列表是:

列表 1:

List1 = [('11111', 'Case 1'),('2222222', 'Case 2')] # [ID, Subject]

list 2:

List2 = [('11111', 'April'),('2222222', 'March'),('333333', 'January')]  # [ID, Date]

期望的输出:

[('11111', 'Case 1','April'),('2222222', 'Case 2','March')]

最佳答案

您可以使用 list comprehension 获取二维表:

from collections import OrderedDict

od = OrderedDict([
(u'totalSize', 418),
(u'done', True),
(u'records', [
OrderedDict([
(u'attributes', OrderedDict([
(u'type', u'Case'),
(u'url', u'/services/Case/11111')
])),
(u'Id', u'11111'),
(u'Subject', u'Case 1')
]),
OrderedDict([
(u'attributes', OrderedDict([
(u'type', u'Case'),
(u'url', u'/services/Case/2222222')
])),
(u'Id', u'2222222'),
(u'Subject', u'Case 2')
]),
#...
])
])

list1 = [(record['Id'], record['Subject']) for record in od['records']]
print list1 # -> [(u'11111', u'Case 1'), (u'2222222', u'Case 2')]

“内部连接”可以用类似这样的代码来模仿:

list2 = [('11111', 'April'), ('2222222', 'March'), ('333333', 'January')]

joined = [item1+item2[1:] for item1 in list1
for item2 in list2
if item1[0] == item2[0]]

print joined # -> [(u'11111', u'Case 1', 'April'),
# (u'2222222', u'Case 2', 'March')]

注意:后者效率较低,因此您需要使用更高级的处理技术和/或数据结构来快速处理大型数据集。

关于python - 将 OrderedDict 解析为 Python 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26763467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com