Python将JSON对象数据转换成Lis

2024-09-23 04:25:21 发布

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

我在一个带有key:valueJSON对象中有数据,如下Python所示。对于HariLizID16有两个记录具有相同的ID。在

from collections import defaultdict
from itertools import *
from operator import itemgetter

data = [
  {
    "fname": "Abc",
    "lname": "xyz",
    "id": 15,
    "club": "-",
    "date": "-"
  },
  {
    "fname": "Hari",
    "lname": "Lee",
    "id": 13,
    "club": "Manutd",
    "date": "2016-03-20T22:00:00.000Z"
  },
  {
    "fname": "David",
    "lname": "James",
    "id": 14,
    "club": "Barca",
    "date": "-"
  },
  {
    "fname": "Hari",
    "lname": "Lee",
    "id": 13,
    "club": "Chelsea",
    "date": "2012-03-20T22:00:00.000Z"
  },
  {
    "fname": "Liz",
    "lname": "Kiz",
    "id": 16,
    "club": "-",
    "date": "-"
  },
  {
    "fname": "Liz",
    "lname": "Kiz",
    "id": 16,
    "club": "Falkon",
    "date": "2014-03-20T22:00:00.000Z"
  }
]

newdata = []
#for item, value in enumerate(data):
  #for i,v in value.iteritems():
    #print value['id']
    #print value[i]
    #print i,v
    #newdata.append()

我想将JSON数据重新格式化为不带键的list,并将复制的ID合并为list列表。具有相同ID的记录将被映射到列表列表中,如下所示。我怎样才能做到这一点?在

^{pr2}$

迭代新的列表数据,并将每个列表数据作为一行写入excel(xlwt)文件中

for i1, v1 in enumerate(newdata):
  for i2,v2 in enumerate(v1):
    if(type(v2) is str):
      print v2
    else:
      for i3,v3 in enumerate(v2):
        print v3

Tags: 数据inid列表fordatevaluefname
1条回答
网友
1楼 · 发布于 2024-09-23 04:25:21

要检查相同的ID,您需要将数据存储在dict

ret_dict = {}

但是dict没有被排序。如果您想保留您的订单,您可以OrderedDict

^{pr2}$

对我来说,{}已经是一个好结果:

^{3}$

但是,对于您想要的,您需要从最后一条dict的values构建一个新列表:

ret_list = [e[0] if len(e) == 1 else e for e in ret_dict.itervalues()]

itervalues()来获取值的迭代器,而不是像values()这样的列表
输出:

>>> print ret_list
[['xyz', '-', '-', 'Abc'], [['Lee', 'Manutd', '2016-03-20T22:00:00.000Z', 'Hari'], ['Lee', 'Chelsea', '2012-03-20T22:00:00.000Z', 'Hari']], ['James', 'Barca', '-', 'David'], [['Kiz', '-', '-', 'Liz'], ['Kiz', 'Falkon', '2014-03-20T22:00:00.000Z', 'Liz']]]

相关问题 更多 >