簡體   English   中英

Python 中 JSON 生成的問題

[英]Probleme with JSON generation in Python

我在這里是因為我嘗試用 python 生成一個正確的 JSON 文件,但實際上我被卡住了。

我的問題是下一個:

我從 Google 表格中獲取數據,並將它們存儲在名為“teams_”的 Python 字典中,您可以在我的代碼的下一部分中看到。

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())} 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM