首页 > 解决方案 > 如何将列表转换为字典?

问题描述

将列表转换为字典时出现错误,因为一个索引的列表中有两个单词,如下所示:

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'}

标签: pythonpython-3.xjupyter-notebook

解决方案


正如@Gerges 所说,您的错误是您的值之一DATA_KBBI不包含\t. 所以split只返回一个元素,它不能被解包到keyandval中。

根据您希望在这种情况下发生的情况,您可以尝试使用partition

key, sep, val = i.partition('\t')

\t这将起作用,但如果您的字符串中没有字符(val也会''如此sep)。这取决于你如何处理这样的价值观。您还可以在获取键和值之前测试 split 的返回值是否具有 > 1 的长度,但我认为分区稍微优雅一些​​。


推荐阅读