我是python的新手,正在尝试实现以下目标:
将获取请求发送到cloudera-Manager的IP,该IP返回具有以下结构的主机的JSON:
{
"items" : [ {
"hostId" : "ddcfbea6-8a7c-462c-38f9-0116338e438a",
"ipAddress" : "1.2.3.4",
"hostname" : "host.example.com",
"rackId" : "/rack01",
"hostUrl" : "http://host.example.com:7180/cmf/hostRedirect/ddcfbea6-8a7c-462c-38f9-0116338e438a"
}
...
}
JSON可以包含数百个元素,我想找到所有具有相同ipAddress条目值的元素,并打印它们以及它们的键和值。
我该如何实现?我正在使用请求模块发送get请求。
最佳答案
对于名为hosts
的JSON对象,
hosts = {
"items" : [ {
"hostId" : "ddcfbea6-8a7c-462c-38f9-0116338e438a",
"ipAddress" : "1.2.3.4",
"hostname" : "host.example.com",
"rackId" : "/rack01",
"hostUrl" : "http://host.example.com:7180/cmf/hostRedirect/ddcfbea6-8a7c-462c-38f9-0116338e438a"
}
...
}
您可以像这样按IP地址对项目进行分组
grouped_items = {}
for item in hosts["items"]:
ip_address = item["ipAddress"]
if ip_address in grouped_items:
grouped_items[ip_address].append(item)
else:
grouped_items[ip_address] = [item]