根据相同的键创建嵌套列表

时间:2018-10-23 08:52:37

标签: python json

我正在尝试读取csv文件并根据相同的键组合值,并且文件中有多个键。 我想基于相同的键聚合记录,以便以后可以从列表访问这些记录并将其作为JSON请求中的值传递给API。

csv文件:

public elementArray(Double[][] array)
{
    // convert Double[][] array to ArrayList<ArrayList<Double>> elements
    this(elements);
}

代码

claimId,subscriberId,claimType,claimSubType,providerId,totalChargeAmt,claimLineNo,pos_code,procedureCode,subdiagnosisCode,svcLineFromDt,svcLineToDt,chargedAmt,clmLineUnits,presentOnAdmit,diagnosisCode
18A000730400,101924200,M,M,002664514003,585,1,11,92014,H43393,2017-06-19,2017-06-19,160,1,U,H43393
18A000730400,101924200,M,M,002664514003,585,2,11,92014,H43393,2017-06-19,2017-06-19,160,2,U,H43394

代码输出:

import csv
with open('JsonRequestPricingMedical.csv','r') as f:
    reader = csv.reader(f)
    next(reader)
    for row in reader:
        print(row)

所需的输出:

最后有两个嵌套列表。

['18A000730400', '101924200', 'M', 'M', '002664514003', '585', '1', '11', '92014', 'H43393', '2017-06-19', '2017-06-19', '160', '1', 'U', 'H43393']
['18A000730400', '101924200', 'M', 'M', '002664514003', '585', '2', '11', '92014', 'H43393', '2017-06-19', '2017-06-19', '160', '2', 'U', 'H43394']

我的目标是实现以下布局。.我认为,一旦我以所需的列表格式获得了数据,就可以从列表中获取值并将其传递。.

Json布局:

['18A000730400', '101924200', 'M', 'M', '002664514003', '585', [['1', '11', '92014', 'H43393','2017-06-19', '2017-06-19', '160', '1'],['2', '11', '92014', 'H43393','2017-06-19', '2017-06-19', '160', '1']],[['U', 'H43393'],['U', 'H43394']]]

1 个答案:

答案 0 :(得分:0)

检查是否有多个具有相同ID的条目(行)。如果有,请将它们读入列表并开始创建结果列表:

[['18A000730400', '101924200', 'M', 'M', '002664514003', '585', '1', '11', '92014', 'H43393', '2017-06-19', '2017-06-19', '160', '1', 'U', 'H43393']
['18A000730400', '101924200', 'M', 'M', '002664514003', '585', '2', '11', '92014', 'H43393', '2017-06-19', '2017-06-19', '160', '2', 'U', 'H43394']]

# result list for now
['18A000730400', '101924200', 'M', 'M', '002664514003', '585']

然后,从每个条目创建一个列表,仅针对列表列表中所需的那些列。因为您知道csv中原始列表中元素的索引,所以可以使用列表切片 [a:b]轻松做到这一点:

[['1', '11', '92014', 'H43393','2017-06-19', '2017-06-19', '160', '1'],['2', '11', '92014', 'H43393','2017-06-19', '2017-06-19', '160', '1']]

[['U', 'H43393'],['U', 'H43394']]

创建时,只需将其添加到结果列表中即可

这很难解释,但我希望这能给您一个想法。如果需要,请随时让我澄清任何部分:)