Python附加值

2024-04-27 00:48:26 发布

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

我从一个JSON文件中读取数据,并尝试根据一个键(director+sprintname)附加三个calc-overall-saydo、committed-saydo和extra-saydo。我得到下面的错误。 TypeError:append()只接受一个参数(给定2个)

代码:

import json


with open('C:/Users/erpsaam/Desktop/report-v89/kpi-report-aggregation-by- 
director-2018-08-31.json') as f:
category_director_json = json.load(f)


category_director_dataset = []  # we will fill this in this script
for row in category_director_json:
row.get('director',None)
row.get('sprintName', None)
row.get('overallSayDo', None)
row.get('commitedSayDo', None)
row.get('extraSayDo', None)
category_director_dataset.append("DIRECTOR+SPRINTNAME", {'overallSayDo': 'overallSayDo_value', 'commitedSayDo': 'commitedSayDo_value', 'extraSayDo': 'extraSayDo_value'})
print(json.dumps(category_director_dataset))

示例数据(JSON文件)

[
{
    "teamName":"EPAM Backend 1,Cloud Engineering,Content Infrastructure Montreal,Jedi,Seal Team India - APIs,Seal Team India - Security,Seal Team X,Seal Team X India,Sith,UC Live,WeRTV,Krazy Kanucks,Seal Team India - Core,Operator Portal",
    "sprintName":"MF-S98",
    "director":"Rajesh",
    "locations":"Ukraine,SC,Duluth,India,Montreal,LA",
    "countries":"U.S.,Ukraine,Canada,Serbia,Spain,India",
    "cities":"Santa Clara,Ontario Quebec,Duluth,Bangalore,L.A.",
    "vendors":"EPAM,FTE,ITC,L&T TS,G&L,Phalita,Assistera",
    "overallSayDo":17.43,
    "commitedSayDo":9.86,
    "extraSayDo":18.14
},
{
    "teamName":"EPAM Backend 1,Cloud Engineering,Content Infrastructure Montreal,Jedi,Seal Team India - APIs,Seal Team India - Security,Seal Team X,Seal Team X India,Sith,UC Live,WeRTV,Krazy Kanucks,Seal Team India - Core,Operator Portal",
    "sprintName":"MF-S97",
    "director":"Rajesh",
    "locations":"Ukraine,SC,Duluth,India,Montreal,LA",
    "countries":"U.S.,Ukraine,Canada,Serbia,Spain,India",
    "cities":"Santa Clara,Ontario Quebec,Duluth,Bangalore,L.A.",
    "vendors":"EPAM,FTE,ITC,L&T TS,G&L,Phalita,Assistera",
    "overallSayDo":60,
    "commitedSayDo":49.36,
    "extraSayDo":37.57
},
{
    "teamName":"EPAM Backend 1,Cloud Engineering,Content Infrastructure Montreal,Jedi,Seal Team India - APIs,Seal Team India - Security,Seal Team X,Seal Team X India,Sith,UC Live,WeRTV,Krazy Kanucks,Seal Team India - Core,Operator Portal",
    "sprintName":"MF-S96",
    "director":"Rajesh",
    "locations":"Ukraine,SC,Duluth,India,Montreal,LA",
    "countries":"U.S.,Ukraine,Canada,Serbia,Spain,India",
    "cities":"Santa Clara,Ontario Quebec,Duluth,Bangalore,L.A.",
    "vendors":"EPAM,FTE,ITC,L&T TS,G&L,Phalita,Assistera",
    "overallSayDo":15.14,
    "commitedSayDo":15,
    "extraSayDo":0.93
},
{
    "teamName":"EPAM Backend 1,Cloud Engineering,Content Infrastructure Montreal,Jedi,Seal Team India - APIs,Seal Team India - Security,Seal Team X,Seal Team X India,Sith,UC Live,WeRTV,Krazy Kanucks,Seal Team India - Core,Operator Portal",
    "sprintName":"MF-S95",
    "director":"Rajesh",
    "locations":"Ukraine,SC,Duluth,India,Montreal,LA",
    "countries":"U.S.,Ukraine,Canada,Serbia,Spain,India",
    "cities":"Santa Clara,Ontario Quebec,Duluth,Bangalore,L.A.",
    "vendors":"EPAM,FTE,ITC,L&T TS,G&L,Phalita,Assistera",
    "overallSayDo":66.64,
    "commitedSayDo":62,
    "extraSayDo":19.79
},
{
    "teamName":"EPAM Backend 1,Cloud Engineering,Content Infrastructure Montreal,Jedi,Seal Team India - APIs,Seal Team India - Security,Seal Team X,Seal Team X India,Sith,UC Live,WeRTV,Krazy Kanucks,Seal Team India - Core,Operator Portal",
    "sprintName":"MF-S94",
    "director":"Rajesh",
    "locations":"Ukraine,SC,Duluth,India,Montreal,LA",
    "countries":"U.S.,Ukraine,Canada,Serbia,Spain,India",
    "cities":"Santa Clara,Ontario Quebec,Duluth,Bangalore,L.A.",
    "vendors":"EPAM,FTE,ITC,L&T TS,G&L,Phalita,Assistera",
    "overallSayDo":55.57,
    "commitedSayDo":50.36,
    "extraSayDo":35.29
}
]

如何修复append语句?你知道吗


Tags: jsonteamrowdirectorcategorysealmontrealindia
2条回答

错误

可以在以下行中找到错误:

category_director_dataset.append("DIRECTOR+SPRINTNAME", {'overallSayDo': 'overallSayDo_value', 'commitedSayDo': 'commitedSayDo_value', 'extraSayDo': 'extraSayDo_value'})
                                                      ^
                                                      ^ error is this comma here

基本上可以简化为:

a_list.append(value1, value2)

请仔细阅读错误消息:

TypeError: append() takes exactly one argument (2 given)

^{}方法只接受一个参数,但您已经在其中放入了两个参数。你知道吗

你能做什么

  1. 将参数放入一个元组(用括号括起来)以将参数数减少到一个
  2. 使用另一个数据结构(可能字典对您的情况很有用,因为您已经提到要使用DIRECTOR+SPRINTNAME作为键?)你知道吗

用字典

DIRECTOR = "director"
SPRINTNAME = "sprint"
category_director_dataset = {}
category_director_dataset[DIRECTOR + SPRINTNAME] = { ... your data here ... }

因此,如果要检索给定DIRECTOR + SPRINTNAME的JSON,只需执行以下操作:

json = category_director_dataset[DIRECTOR + SPRINTNAME]

是的,这很明显,就像我们从错误中看到的。 把它改成:

category_director_dataset.append("DIRECTOR+SPRINTNAME")
category_director_dataset.append({'overallSayDo': 'overallSayDo_value', 
'commitedSayDo': 'commitedSayDo_value', 'extraSayDo': 'extraSayDo_value'})

相关问题 更多 >