是否将此python字典转换为JSON格式?

2024-04-27 08:35:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python字典,我想把它转换成json。

Python字典:

{"20090209.02s1.1_sequence.txt": [645045714, 3559.6422951221466, 206045184], "20090209.02s1.2_sequence.txt": [645045714, 3543.8322949409485, 234618880]}

期望输出:

{
       "file_name":"20090209.02s1.1_sequence.txt",
       "file_information": [645045714, 3559.6422951221466, 206045184],

    {
       "file_name":"20090209.02s1.2_sequence.txt",
       "file_information": [645045714, 3543.8322949409485, 234618880],

    }
}

尝试使用json.dumps但未获得所需的输出。


Tags: nametxtjson字典informationfilesequencedumps
2条回答

将键值对拆分为不同的字典:

json.dumps([{'file_name': key, 'file_information': value} for key, value in yourdict.iteritems()])

注意,输出的顺序是任意的(字典没有固定的顺序)。您可能希望对输出进行排序以生成可预测的列表:

from operator import itemgetter

data = [{'file_name': key, 'file_information': value} for key, value in yourdict.iteritems()]
data.sort(key=itemgetter('file_name'))
json.dumps(data)

这会产生:

>>> data = [{'file_name': key, 'file_information': value} for key, value in yourdict.iteritems()]
>>> data.sort(key=itemgetter('file_name'))
>>> json.dumps(data)
'[{"file_name": "20090209.02s1.1_sequence.txt", "file_information": [645045714, 3559.6422951221466, 206045184]}, {"file_name": "20090209.02s1.2_sequence.txt", "file_information": [645045714, 3543.8322949409485, 234618880]}]'
>>> print json.dumps(data, indent=4)

[
    {
        "file_name": "20090209.02s1.1_sequence.txt",
        "file_information": [
            645045714,
            3559.6422951221466,
            206045184
        ]
    },
    {
        "file_name": "20090209.02s1.2_sequence.txt",
        "file_information": [
            645045714,
            3543.8322949409485,
            234618880
        ]
    }
]

您需要首先创建具有正确格式的结构:

import json

dict_ = {"20090209.02s1.1_sequence.txt": [645045714, 3559.6422951221466, 206045184], "20090209.02s1.2_sequence.txt": [645045714, 3543.8322949409485, 234618880]}
values = [{"file_name": k, "file_information": v} for k, v in dict_.items()]
json.dumps(values, indent=4)

请注意,所需的JSON输出在我看来无效。以下是此代码的输出:

[
    {
        "file_name": "20090209.02s1.1_sequence.txt", 
        "file_information": [
            645045714, 
            3559.6422951221466, 
            206045184
        ]
    }, 
    {
        "file_name": "20090209.02s1.2_sequence.txt", 
        "file_information": [
            645045714, 
            3543.8322949409485, 
            234618880
        ]
    }
]

相关问题 更多 >