首页 > 解决方案 > 如何从python中的字符串列表创建字典或json?

问题描述

我正在尝试从将成为字典值的字符串列表创建字典或 json,并且我有字典键将成为匹配值。我认为完成这项工作对我来说很直观,但我有以下错误:

> Traceback (most recent call last):
>     output[elm].append(k) TypeError: list indices must be integers or slices, not str

我很好奇是什么导致了这个问题。谁能指出我的代码有什么问题?

我的尝试

这是我的代码:

更新

lst = {api, 1,0,0}
mystring = lst.split(",")

mystring = ['api', '1', '0', '0']
names = {'name', 'mayor', 'minor', 'patch'}

output =[]
for elm in range(len(names)):
    for k in range(len(mystring)):
        output[elm].append(k)

print(output)

我该如何解决这个错误?是否有有效的方法可以在不使用嵌套 for 循环的情况下从字符串列表中制作字典或 json?有更好的主意吗?

所需的输出

我想得到这样的字典或json:

{
  "mayor": 1,
  "minor": 0,
  "name": "api",
  "patch": 0
}

如果我的编码缺陷很小,我很抱歉,我找不到问题的根源。谢谢

标签: pythonstring

解决方案


一个整洁的单线:

my_string = ['api', '1', '0', '0']
names = ['name', 'mayor', 'minor', 'patch']

output = {names[i]: my_string[i] for i in range(len(my_string))}
print(output)

这应该给出:

{'name': 'api', 'mayor': '1', 'minor': '0', 'patch': '0'}

请注意,您的变量names不再是一个集合;没有必要有一套。此外,如果有集合,代码将无法工作,因为集合不可下标。

您的代码中有很多错误:在这里,您声明的是一个列表,而不是字典:

output =[]

在这里,您将检查您的集合和列表的长度,您必须检查它们:

for elm in range(len(names)):
    for k in range(len(mystring)):

推荐阅读