python - 如何将列表转换为字典?
问题描述
将列表转换为字典时出现错误,因为一个索引的列表中有两个单词,如下所示:
key_norm.txt
['bimbel\tbimbingan belajar']
这就是他们所说的:
ValueError:没有足够的值来解包(预期 2,得到 1)
这是我的代码,如果每个索引列表中只有一个单词,它就会运行。
#normalize word
DATA_KBBI = [kamus.strip('\n').strip('\r') for kamus in open('key_norm.txt')]
#convert to dict
dic={}
for i in DATA_KBBI:
(key,val)=i.split("\t")
dic[str(key)]=val
我希望输出是这样的:
{'bimbel' : 'bimbingan belajar'}
解决方案
正如@Gerges 所说,您的错误是您的值之一DATA_KBBI
不包含\t
. 所以split
只返回一个元素,它不能被解包到key
andval
中。
根据您希望在这种情况下发生的情况,您可以尝试使用partition
key, sep, val = i.partition('\t')
\t
这将起作用,但如果您的字符串中没有字符(val
也会''
如此sep
)。这取决于你如何处理这样的价值观。您还可以在获取键和值之前测试 split 的返回值是否具有 > 1 的长度,但我认为分区稍微优雅一些。
推荐阅读
- google-apps-script - (谷歌表格脚本)清除特定单元格
- c# - 网格动态生成搜索过程中重复问题解决的算法
- javascript - 使用 ng-repeat angularjs 在表中应用行跨度
- python - 两个熊猫数据框的对称差异
- python - 安装 numpy Raspberry Pi
- rust - 如何仅为“bin”目标禁用 lints
- r - 如何在不使用管道的情况下将 dcast 引入 data.table 链?
- javascript - 我如何每 10 秒捕获一次帧并将其发送到服务器?
- h2 - 由于用于从 flyway_schema_history 读取数据的 sql 语句中的错误,flyway 迁移无法与 H2 数据库一起使用
- regression - 如何在进行 cypress 视觉回归时在测试运行之前删除所有屏幕截图