首页 > 解决方案 > 我的电子表格阅读功能不断覆盖所有内容

问题描述

好的,所以我有一个电子表格,我想将所有条目放入我的嵌套字典列表中。我决定使用两个 for 循环来遍历电子表格。并将单元格的值安全地保存到相应的嵌套字典中。这是我的代码(我知道这是我非常缺乏经验的狗屎):

def SpGetLink():
global SpDic
for row in SpDicGen():
    Data = dict.fromkeys(SpDic.values(), {})
    Data[SpDic[row]]["Link"] = []
    Data[SpDic[row]]["Title"] = []
    for col in range(1000):
        if ws.cell(row=row, column=col + 6).hyperlink is not None:
            data = str(ws.cell(row=row, column=col + 6).hyperlink.target)
            if data.startswith("http"):
                if data not in Data[SpDic[row]]["Link"]:
                    Data[SpDic[row]]["Link"].append(data)
                    json.dump(Data, open("Data.json", "w+"), indent=4)  # , sort_keys=True)
            else:
                Data[SpDic[row]]["Title"].append(data)

SpDic 是一个单独的字典,用于获取行的相应名称。

现在我的问题如下。当我打开 Data.json 时,每个应该包含相应行中所有链接的列表都包含相同的 5 个链接,它们是电子表格的最后 5 个链接。它看起来像这样:

"smile": {
    "Link": [
        "https://media.giphy.com/media/k7J8aS3xpmhpK/giphy.gif",
        "https://media.giphy.com/media/aY1HMl4E1Ju1y/giphy.gif",
        "https://media.giphy.com/media/RLJxQtX8Hs7XytaoyX/giphy.gif",
        "https://media.giphy.com/media/1448TKNMMg4BFu/giphy.gif",
        "https://media.giphy.com/media/b7l5cvG94cqo8/giphy.gif"
    ],
    "Title": []
},
"grin": {
    "Link": [
        "https://media.giphy.com/media/k7J8aS3xpmhpK/giphy.gif",
        "https://media.giphy.com/media/aY1HMl4E1Ju1y/giphy.gif",
        "https://media.giphy.com/media/RLJxQtX8Hs7XytaoyX/giphy.gif",
        "https://media.giphy.com/media/1448TKNMMg4BFu/giphy.gif",
        "https://media.giphy.com/media/b7l5cvG94cqo8/giphy.gif"
    ],
    "Title": []
},
"laugh": {
    "Link": [
        "https://media.giphy.com/media/k7J8aS3xpmhpK/giphy.gif",
        "https://media.giphy.com/media/aY1HMl4E1Ju1y/giphy.gif",
        "https://media.giphy.com/media/RLJxQtX8Hs7XytaoyX/giphy.gif",
        "https://media.giphy.com/media/1448TKNMMg4BFu/giphy.gif",
        "https://media.giphy.com/media/b7l5cvG94cqo8/giphy.gif"
    ],
    "Title": []
},

有谁知道为什么会发生这种情况以及如何解决?

标签: pythonjsonlistdictionaryspreadsheet

解决方案


我通过将其中一个 for 循环变成一个函数并在另一个 for 循环中调用它来修复它。


推荐阅读