如何用Python动态提取JSON中服务器的地址与状态字段?
解决shell.Dict遍历提取字段的问题
我来帮你搞定这个问题!首先咱们先搞清楚你报错的核心原因:当你直接写for x in json_variable时,遍历到的其实是字典的键(也就是"server01"、"server02"这类字符串),你试着对字符串用x["address"]自然会触发类型错误——字符串可没有这种键索引的用法呀。再加上你这个是shell.Dict对象,它的遍历逻辑和标准Python dict一致,但得用正确的方法拿到对应的值。
正确的动态遍历方法
你可以用items()方法来遍历字典的键值对,这样就能同时拿到服务器名称和对应的信息字典,完美实现动态处理:
for server_name, server_info in json_variable.items(): print(f"{server_info['address']} --> {server_info['state']}")
如果只需要服务器的信息(不需要名称),也可以直接用values()方法遍历所有值对象:
for server_info in json_variable.values(): print(f"{server_info['address']} --> {server_info['state']}")
这两段代码都会输出你想要的结果:
server01:5454 --> online server02:5454 --> online server03:5454 --> online
为什么原来的代码不行?
再回头看你原来的循环:
for x in json_variable: print(x["address"])
这里的x是"server01"、"server02"这类字符串,你试图对字符串用字典式的键索引,Python当然会报错(你遇到的'shell.Dict' object is not iterable是这个特殊Dict对象在直接遍历键时的表现,但核心逻辑是没拿到值对象)。
内容的提问来源于stack exchange,提问作者S.D.
相关产品推荐
相关产品推荐

