如何在python中更改嵌套列表中的json数据

2024-09-28 18:12:30 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我有一个如下的数据集:

[<OldSample {u'counter_name': u'cpu_util', u'user_id': u'id', u'resource_id': u'id', u'timestamp': u'2015-07-01T15:13:55', u'counter_volume': 0.5000, u'resource_metadata': {u'ramdisk_id': u'None', u'flavor.vcpus': u'1', u'os': u'nova', u'display_name': u'jj', u'flavor.id': u'kk', u'status': u'active', u'ephemeral_gb': u'0', u'flavor.name': u'm1.small.io', u'disk_gb': u'20', u'kernel_id': u'None', u'image.id': u'5776a360-0953-4c93-931d-a6e3616fb8dc', u'flavor.ram': u'2048', u'host': u'll', u'flavor.ephemeral': u'0', u'image.name': u'ubuntu-io', u'image_ref_url': u'link': u"[{'href': 'link', 'rel': 'bookmark'}]", u'cpu_number': u'1', u'flavor.disk': u'20', u'root_gb': u'20', u'name': u'instance-000000d3', u'memory_mb': u'2048', u'instance_type': u'596642d8-0813-4ae9-aec4-0105fdf05761', u'vcpus': u'1', u'image_ref': u'5776a360-0953-4c93-931d-a6e3616fb8dc', u'flavor.links': u"[{'href': 'link', 'rel': 'bookmark'}]"}, u'source': u'openstack', u'counter_unit': u'%', u'recorded_at': u'2015-07-01T15:13:56.006000', u'project_id': u'1670f0e56fb6421cb83d81b60b149c04', u'message_id': u'ca8ea466-2003-11e5-a764-002590e64886', u'counter_type': u'gauge'}>, <OldSample {u'counter_name': u'cpu_util', u'user_id': u'7bffa12f482840c7801e3e01e160c8cb', u'resource_id': u'0c8b6b26-3340-41e3-ac8b-cc38f15d3570', u'timestamp': u'2015-07-01T15:08:32', u'counter_volume': 5.4399999999999995, u'resource_metadata': {u'ramdisk_id': u'None', u'flavor.vcpus': u'1', u'OS-EXT-AZ.availability_zone': u'nova', u'display_name': u'kalman_instance', u'flavor.id': u'1', u'status': u'active', u'ephemeral_gb': u'0', u'flavor.name': u'm1.tiny', u'disk_gb': u'1', u'kernel_id': u'None', u'image.id': u'1c9b08f0-d1fa-4acc-a11c-87b77310158c', u'flavor.ram': u'512', u'host': u'25aa71ded460ea9d4bf52e1aac34017691699cb5e4e389704d738bed', u'flavor.ephemeral': u'0', u'image.name': u'cirros', u'image_ref_url': u'link', u'image.links': u"[{'href': 'link', 'rel': 'bookmark'}]", u'cpu_number': u'1', u'flavor.disk': u'1', u'root_gb': u'1', u'name': u'instance-0000013c', u'memory_mb': u'512', u'instance_type': u'1', u'vcpus': u'1', u'image_ref': u'1c9b08f0-d1fa-4acc-a11c-87b77310158c', u'flavor.links': u"[{'href': 'link', 'rel': 'bookmark'}]"}, u'source': u'openstack', u'counter_unit': u'%', u'recorded_at': u'2015-07-01T15:08:32.459000', u'project_id': u'1670f0e56fb6421cb83d81b60b149c04', u'message_id': u'09b5173e-2003-11e5-ac7a-002590e64b12', u'counter_type': u'gauge'}>]

我需要将其更改为嵌套列表类似于这样的内容,以便使用我的数据可视化库

我的密码

def counterVolume(data):
  for each in data:
    y = each.counter_volume
    x = each.timestamp
    message = {"columns": [["x", x],["y", y]]}
    print "message: " + json.dumps(message)

给我结果:

   message: {"columns": [["x", "2015-07-06T13:26:19"], ["y", 5000.0]]}       
   message: {"columns": [["x", "2015-07-06T13:26:19"], ["y", 5000.0]]}
   message: {"columns": [["x", "2015-07-06T13:26:19"], ["y", 5000.0]]}  

这不是我想要的,怎样才能得到我想要的结果呢

message: {
         "columns": [
                    ["x", "2015-07-06T13:26:19",
             "2015-07-06T13:26:19","2015-07-06T13:26:19"],

                    ["y", 5000.0, 5000.0, 5000.0]
                    ]
              }

Tags: columnsinstancenameimagenoneidmessagecounter
2条回答

您需要创建计数器值和时间戳的列表

def counterVolume(data):
    x = ["x"]
    y = ["y"]
    for each in data:
        y.append(each.counter_volume)
        x.append(each.timestamp)

message = {"columns": [x,y]}
print "message: " + json.dumps(message) 

试试这个:

x = ["x"]
x.extend( [ datum.timestamp for datum in data ])
y = ["y"]
y.extend( [ datum.counter_volume for datum in data ])
message = {"message": {"columns":  [x, y]}}

相关问题 更多 >