python - 将多个字典附加到列表并转储到 json

标签 python json python-2.7

我将多个字典附加到一个列表中,然后将其转换为 json。它给了我多个列表,每个列表添加一个额外的结果。我想在单个列表数组中显示整个输出。

mail_output = []

for i in mail_ids.split():
    result, msg_data = mail.fetch(i, '(RFC822)')

    for each_response in msg_data:
        if isinstance(each_response, tuple):
            msg = email.message_from_string(each_response[1])                  
            items_list = msg.items()
            dict_items = OrderedDict(items_list)       
            email_body = ''
            if msg.is_multipart():
                for part in msg.walk():
                    case...
            dict_items.update({'Body': email_body})
    mail_output.append(dict_items)

    print(json.dumps(mail_output, indent=4, sort_keys=True))

我得到的输出:

[
 {
  "Body": "Forwarded.\r\n\r\nFrom: User
  "Subject": "Fw: Tuesday", 
  "To": "<reciever@gmail.com>"
 }
]
[
 {
  "Body": "Forwarded.\r\n\r\nFrom: User
  "Subject": "Fw: Tuesday", 
  "To": "<reciever@gmail.com>"
 },
 {
  "Body": "Urgent Message.\r\n\r\nFrom: Alerts
  "Subject": "Alerts", 
  "To": "<reciever@gmail.com>"
 }
]

预期输出:

[
 {
  "Body": "Forwarded.\r\n\r\nFrom: User
  "Subject": "Fw: Tuesday", 
  "To": "<reciever@gmail.com>"
 },
 {
  "Body": "Urgent Message.\r\n\r\nFrom: Alerts
  "Subject": "Alerts", 
  "To": "<reciever@gmail.com>"
 }
 .....
]

最佳答案

mail_output = []

for i in mail_ids.split():
    result, msg_data = mail.fetch(i, '(RFC822)')

    for each_response in msg_data:
        if isinstance(each_response, tuple):
            msg = email.message_from_string(each_response[1])                  
            items_list = msg.items()
            dict_items = OrderedDict(items_list)       
            email_body = ''
            if msg.is_multipart():
                for part in msg.walk():
                    case...
            dict_items.update({'Body': email_body})
    mail_output.append(dict_items)

print(json.dumps(mail_output, indent=4, sort_keys=True))

您只是遇到缩进问题..请参阅此处的最后一行..这是我更改的唯一部分。否则,脚本将为 for i in mail_ids.split() 的每次迭代打印。

关于python - 将多个字典附加到列表并转储到 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56186222/

相关文章:

python - 如何从源代码构建 Python 3.4.6?

python - 如何在 Python 中使用 win32gui 关闭带句柄的窗口

javascript - 用 angular.forEach 替换 json 中的对象

javascript - 为什么 SoundCloud API 会导致循环以不同的顺序列出数据

python 元组和列表。拒绝转换的元组

python - 列表矩阵 - Python

python - 使用前一行引用快速循环 Python 数据框

python - 在 Scrapy 中重写 parse_start_url() 并将抓取深度限制为 1

javascript - 缺少 ] 在元素列表解析 JSON 之后

python - pytest 的 addoptions 和动态参数化测试装置的问题