Python中JSON生成的问题



我来这里是因为我试图用python生成一个合适的JSON文件,但实际上我被卡住了。

我的问题是下一个:

我从谷歌表单中获取数据,并将它们存储在名为";teams_;您可以在我的代码的下一部分中看到。

teams_ = {}
nbTeam = 0
for row in values:
teams_[nbTeam] = {"NAME":"{}".format(row[1]),
"PLAYERS" : [
"{}".format(row[2]),
"{}".format(row[3])
]
}
nbTeam = nbTeam +1
print(teams_)

结果是下一个

{
0: {'NAME': 'A', 'PLAYERS': ['AA1', 'AA2']},
1: {'NAME': 'B', 'PLAYERS': ['BB1', 'BB2']}, 
2: {'NAME': 'C', 'PLAYERS': ['CC1', 'CC2']}, 
3: {'NAME': 'D', 'PLAYERS': ['DD1', 'DD2']}, 
4: {'NAME': 'E', 'PLAYERS': ['EE1', 'EE2']}, 
5: {'NAME': 'F', 'PLAYERS': ['FF1', 'FF2']}, 
6: {'NAME': 'G', 'PLAYERS': ['GG1', 'GG2']}, 
7: {'NAME': 'H', 'PLAYERS': ['HH1', 'HH2']}
}

现在,如果我想把它放在JSON文件中,我首先尝试了这个解决方案

j = {"TEAM" : [ teams_ ]} 
datas.write(json.dumps(j, indent=4))

这就产生了这样的东西:

{
"TEAM": [
{
"0": {
"NAME": "A",
"PLAYERS": [
"AA1",
"AA2"
]
},
"1": {
"NAME": "B",
"PLAYERS": [
"BB1",
"BB2"
]
},
"2": {
"NAME": "C",
"PLAYERS": [
"CC1",
"CC2"
]
},
"3": {
"NAME": "D",
"PLAYERS": [
"DD1",
"DD2"
]
},
"4": {
"NAME": "E",
"PLAYERS": [
"EE1",
"EE2"
]
},
"5": {
"NAME": "F",
"PLAYERS": [
"FF1",
"FF2"
]
},
"6": {
"NAME": "G",
"PLAYERS": [
"GG1",
"GG2"
]
},
"7": {
"NAME": "H",
"PLAYERS": [
"HH1",
"HH2"
]
}
}
]
}

所以我尝试了另一种方式:

j = {"TEAM" : [ teams_[0], teams_[1], teams_[2],teams_[3], teams_[4], teams_[5],teams_[6], teams_[7] ]} 
datas.write(json.dumps(j, indent=4))

这对输出效果很好:

{
"TEAM": [
{
"NAME": "A",
"PLAYERS": [
"AA1",
"AA2"
]
},
{
"NAME": "B",
"PLAYERS": [
"BB1",
"BB2"
]
},
{
"NAME": "C",
"PLAYERS": [
"CC1",
"CC2"
]
},
{
"NAME": "D",
"PLAYERS": [
"DD1",
"DD2"
]
},
{
"NAME": "E",
"PLAYERS": [
"EE1",
"EE2"
]
},
{
"NAME": "F",
"PLAYERS": [
"FF1",
"FF2"
]
},
{
"NAME": "G",
"PLAYERS": [
"GG1",
"GG2"
]
},
{
"NAME": "H",
"PLAYERS": [
"HH1",
"HH2"
]
}
]
}

但如果我有12或100支球队呢?所以我正在寻找一种更好的方法来做到这一点,而这正是我陷入困境的地方。有人知道做这件事的方法吗;自动地"?

感谢您抽出时间!

使用teams_字典中的.values()作为列表,这样就可以了。所以试试:

j = {"TEAM" : list(teams_.values())} 

最新更新