【发布时间】:2019-09-05 18:24:14
【问题描述】:
所以我在Python (3.7) 中有这个输入:
params_list = ['SN:783HJ_DN', ' release tag:v2.2.4', ' build Feb 5 2019 16:13:34\n']
如果我查询的话,我需要一本字典
params_list['SN'], I got '783HJ_DN'
与其他相同(但在构建参数中没有':')。即使我尝试了这个并且我认为我是解决方案:
list_dict = dict(item.split(":") for item in params_list.split(","))
相反,我得到了这个输出错误:
回溯(最近一次调用最后):文件“/home/alvaro/parse.py”,第 9 行,在 param_dict = dict(item.split(":") for item in params.split(",") ) ValueError: 字典更新序列元素#0 的长度为 5; 2 是必需的
【问题讨论】:
-
如果所有的键后跟一个冒号,这将很简单。但是由于“build”后面是一个空格,因此可能无法编写一个完全明确的解决方案。没有一条规则可以描述如何提取所有密钥。 “第一个冒号前的所有字符”表示“build Feb 5 2019 16”成为键; “第一个空格或冒号之前的所有字符”意味着“释放”成为键而不是“释放标记”。
-
请注意,您不能命名列表,因为它是保留的。
-
*不应该,你可以随意命名一个变量,但是你会覆盖原来的功能。
-
@zabop,是的,只是为了更容易理解改了真名编辑:更新列表名称
-
我还要注意:你为什么要调用 params_list.split(",")? params_list 不是逗号分隔的字符串,对吧?每个键值对似乎已经相互分离了。
标签: python list dictionary