将信息添加到 Python 中的 JSON 库时遇到问题

Trouble with adding information to JSON library in Python

所以我最近一直在尝试用 python 构建一个动态 JSON 库,但我在循环数据时遇到了问题。这个问题可能很容易解决,但我对编程很陌生,尤其是使用 JSON.

基本上,我试图得出一个 JSON 看起来类似于此的输出:

    {
      "src_host": [
        "list item 1",
        [
          "SSH",
          "Telnet",
          "STMP"
        ]
      ]
    },
    {
      "src_host": [
        "list item 2",
        [
          "SSH",
          "Telnet",
          "STMP"
        ]
      ]
    }

我想用另一个列表中的单个条目填充每个“src_host”列表。我基本上想为每个提供的列表项定义一个 src_host 。我使用的代码如下所示:

host_dict = {}
host_dict["src_host"] = []
host_services_list = ["SSH","Telnet","STMP"]

mylist = ["list item 1", "list item 2"]

counter = 0

for item in mylist:
    json_data['zone'][0]['hosts'].append(host_dict)
    host_dict['src_host'].append(mylist[counter])
    counter = counter + 1

host_dict['src_host'].append(host_services_list)

我 运行 遇到的问题似乎与我为填充 Json 数据所做的循环有关。由于我无法弄清楚的原因,当我执行此代码时,Json 输出如下所示:

    {
      "src_host": [
        "list item 1",
        "list item 2",
        [
          "SSH",
          "Telnet",
          "STMP"
        ]
      ]
    },
    {
      "src_host": [
        "list item 1",
        "list item 2",
        [
          "SSH",
          "Telnet",
          "STMP"
        ]
      ]
    }

如您所见,列表项“列表项 1”和“列表项 2”附加到每个 src_host 列表,而不是“列表项 1”添加到第一个 src_host 和“列表项目 2”被添加到第二个。

我假设我的逻辑在这里有缺陷,或者我遗漏了一些非常简单的东西,但我现在似乎无法解决这个问题,想寻求帮助。

感谢您的所有帮助!

注: ['zone'][0]['hosts']是因为Json的这部分在更大的 Json 文件。我认为没有必要显示 Json 文件的每一部分,但仍想解释以防万一。

我不认为这个数据结构会给你带来任何好处,但这里有一个超级简单的列表理解来完成它:

host_title = 'src_host'
host_services_list = ['SSH', 'Telnet', 'STMP']
mylist = ['list item 1', 'list item 2']

hosts = [{host_title: [item, host_services_list]}
         for item in mylist]

import json
print(json.dumps(hosts, indent=2))

输出:

[
  {
    "src_host": [
      "list item 1",
      [
        "SSH",
        "Telnet",
        "STMP"
      ]
    ]
  },
  {
    "src_host": [
      "list item 2",
      [
        "SSH",
        "Telnet",
        "STMP"
      ]
    ]
  }
]

这里的关键是从 mylist 开始并从那里构建数据,但这可能无法正常工作,具体取决于其余数据的结构。