python - 如何从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
}
如果我的编码缺陷很小,我很抱歉,我找不到问题的根源。谢谢
解决方案
一个整洁的单线:
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)):
推荐阅读
- r - 如何在 Simmer 环境中编写生成器循环
- exchangewebservices - 调用 EWS GetItem 时出现 ErrorAccessDenied
- javascript - 应用程序初始化代码在 React 应用程序中的作用是什么?
- windows - 有没有办法在 Windows 10 服务的隐藏 gui 上按下按钮?
- google-chrome - 安装 seabios 时出错(意外标记“换行符”附近的语法错误)
- java - Kafka 用于服务间通信。定向通信问题
- c# - Visual Studio - Sabre GetReservationRS 未在 Intellisense 中显示旅行项目
- google-cloud-platform - GCP 引擎 Ubuntu 16.04 崩溃
- android - 屏幕旋转后的 Android Arch 组件 ViewModel 和 LiveData 触发
- c# - 如何获得 ResultCodeExtended OPOS?