将信息添加到 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
开始并从那里构建数据,但这可能无法正常工作,具体取决于其余数据的结构。
所以我最近一直在尝试用 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
开始并从那里构建数据,但这可能无法正常工作,具体取决于其余数据的结构。