我正在编写一些我最高目标的代码,以json格式提供一些信息。我想显示像这样的服务器名称和服务器:(我的目标不是漂亮的打印,但我只是这样显示它,所以它更明显)
{
"server": [
{ "name" : "some_server_name", "url" : "some_server_url" }
{ "name" : "another_server_name", "url" : "another_server_url" }
]
}
我现在有两个列表,一个是服务器名,另一个是serverulrs。我遍历名称,然后访问匹配的URL。完成之后我想将它附加到字典中。当我拿到这本字典。我想将它附加到我的json_dict。我创建了那个dict,因为我还有另外两个列表,我想在json信息中显示它。 (您可以忽略rdp和cert,因为它们已经正确显示)
def build_dict(server_name, server_url, rdp, cert):
json_dict = defaultdict(list)
server_dict = {}
if server_name and server_url:
for i, iter_name in enumerate(server_name):
server_dict.update( name = iter_name, url = server_url[i] )
json_dict['server'].append(server_dict)
if rdp:
for iter_rdp in rdp:
json_dict['config'].append(iter_rdp)
if cert:
for iter_cert in cert:
json_dict['cert'].append(iter_cert)
return json_dict
我的服务器名称列表的条目:
[u' 123name',u' qwer123']
我的服务员名单列表:
[u' 123url',u' qwer123']
不幸的是,最终输出如下所示:
{"cert": ["123url", "123123", "123123123"],
"config": ["123rdp", "123123", "123123123"],
"server": [
{"url": "qwer123", "name": "qwer123"},
{"url": "qwer123", "name": "qwer123"}
]
}
您可以忽略cert和config,因为这已经按预期工作。我只是不明白为什么我有:
{"url": "qwer123", "name": "qwer123"},
{"url": "qwer123", "name": "qwer123"}
而不是:
{"url": "123name", "name": "123url"},
{"url": "qwer123", "name": "qwer123"}
作为输出。
答案 0 :(得分:1)
正如jonrsharpe所说,你的server_dict
位于错误的地方。您应该考虑将它放在for循环中,这样您只需更新最近通过for循环接收的两个条目。
if server_name and server_url:
for i, iter_name in enumerate(server_name):
server_dict = dict( name = iter_name, url = server_url[i] )
json_dict['server'].append(server_dict)