从列表中创建新的一个列表,其中包含第一个明确的值

时间:2017-07-03 10:22:27

标签: python list

我有一些api请求,作为回复我得到了json,我把它放在列表中。 该清单是:

[
   {
      "status": "running",
      "node": "node-name",
      "uptime": 9484726,
      "name": "hostname",
      "maxcpu": 2,
      ....
      ....
      ....
      ....
   },
   {
      "status": "running",
      "node": "node-name",
      "uptime": 9484726,
      "name": "hostname",
      "maxcpu": 2,
      ....
      ....
      ....
      ....
   },
   {
      "status": "running",
      "node": "node-name",
      "uptime": 9484726,
      "name": "hostname",
      "maxcpu": 2,
      ....
      ....
      ....
      ....

从这个列表中我需要创建一个只有name和vmid的新的,需要看起来像:

[
   { 
     "name": "some-name",
     "vmid": "some-vmid"
   },
   { "name": "some-name",
     "vmid": "some-vmid"
   }

如何在Python中执行此操作?

3 个答案:

答案 0 :(得分:0)

你可以像这样做这个列表理解,

result = [{'name':i['name'],'vmid':i['vmid']} for i in data]

答案 1 :(得分:0)

这应该这样做:

small_list = []
for dic in big_list:
    small_list.append({'name': dic['name'], 'vmid': dic['vmid']})

答案 2 :(得分:0)

pandas是一个开源库,为Python编程语言提供高性能,易于使用的数据结构和数据分析工具。有关详细信息,请参阅此link。 使用pandas的代码:

import pandas as pd
data = pd.DataFrame(input_list)
list_dict = data[["name", "vmid"]].to_dict(orient="records")

或者您可以使用JSON本身创建数据框read_json

data = pd.read_json(json_data, orient="records")
list_dict = data[["name", "vmid"]].to_dict(orient="records")