数据格式转换Python

时间:2014-07-28 11:42:31

标签: python ajax data-conversion

我有以下格式的数据;

(('option1', 'option1'),
('option2', 'option2'),
('option3', 'option3'))

并要求它像这样组织;

[{
    "option1": "option1"
}, {
    "option2": "option2"
}, {
    "option3": "option3"
}]

我将如何解决这个问题?它用于JQuery收到的一些数据。

1 个答案:

答案 0 :(得分:3)

您可以使用列表理解:

[dict([opt]) for opt in inputlist]

演示:

>>> inputlist = (('option1', 'option1'), ('option2', 'option2'), ('option3', 'option3'))
>>> [dict([opt]) for opt in inputlist]
[{'option1': 'option1'}, {'option2': 'option2'}, {'option3': 'option3'}]

但是,如果您的所有option密钥都唯一,那么从这些元组创建一个字典会更好:

>>> dict(inputlist)
{'option2': 'option2', 'option3': 'option3', 'option1': 'option1'}

即使密钥不是唯一的,当您使用一个顶级字典时,将密钥映射到关联值的列表也会容易得多:< / p>

result = {}
for key, val in inputlist:
    result.setdefault(key, []).append(val)

生成result字典,其中每个键引用值的列表。如果任何键在输入列表中出现多次,则会累计关联的值。如果订单无关紧要,您也可以使用set()(使用result.setdefault(key, set()).add(val))。