Python saving dictionarys in files. Problem with "TypeError: list indices must be integers or slices, not str"

Python saving dictionarys in files. Problem with "TypeError: list indices must be integers or slices, not str"

我正在为一个使用字典的项目做电话簿的事情。 一切都很好,直到我保存新添加的键和值的这个有问题的部分。 我想知道我哪里做错了?


Katalog={"Edd":["4858"],
         "Zaa":["4202"],
          }

def save(Katalog):
    badChars = [",""[","]","'"]
    savelist=[]
    filname=input()
    f=open(filname,"w")
    for namn in Katalog:
        savelist.append(namn)
        savelist.append(":")

        for x in Katalog[namn]:
            savelist.append(Katalog[namn][x])
            savelist.append(":")
    savelist.append("\n")

    saveList = ''.join(i for i in saveList if not i in badChars)
    f.write(savelist)
    f.close()

TypeError: 列表索引必须是整数或切片,而不是 str

Katalog: Dict[str, List[str]]

for namn in Katalog:

namnKatalog

的键
    for x in Katalog[namn]:

x是包含在Katalog[namn]

中的字符串
        savelist.append(Katalog[namn][x])

Katalog[namn] 是包含 x 的列表,但使用 x 作为索引将不起作用。您可以将此行更改为 savelist.append(x)

        savelist.append(":")

将该行与上一行交换,这样分隔符就在键和值之间

除了编写自己的函数,您还可以使用标准库中的 json 模块:

import json

def save(Katalog):

    with open(input(), "w") as f:
        josn.dump(Katalog, f)