dict函数的一些问题
我正在尝试用 dict
函数把一个列表转换成字典。
inpu = input.split(",")
dic = dict(inpu)
上面的代码是想获取一个字符串,然后用 split
方法把它按 ','
分开,之后我再用 dict
函数把这个列表转换成字典。
但是,我遇到了这个错误:
ValueError: 字典更新序列的第0个元素长度为6;需要的是2
有人能帮忙吗?
3 个回答
0
字典就是一种包含键和值的配对关系,所以它需要长度为2的列表来对应键和值。你把输入分成了一个平坦的列表,这就是为什么Python在这个情况下会报错——它不知道该把什么当作键,什么当作值。
3
在Python 数据结构的文档中提到,dict()这个构造函数可以直接从存储为元组的键值对列表中创建字典。
所以,你输入的数组每个位置都必须是这种形式:('key', 'value'),比如说:
>>> dict([('sape', 4139), ('guido', 4127), ('jack', 4098)])
{'sape': 4139, 'jack': 4098, 'guido': 4127}
你的输入数组的大小可能大于2。
21
dict
这个东西需要你给它一个包含两个元素的容器,比如一个元组的列表。你不能直接给它一个只包含项的列表,因为它不知道哪个是键,哪个是值。
你现在想做的是这个:
>>> range(10)
<<< [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> dict(range(10))
---------------------------------------------------------------------------
TypeError: cannot convert dictionary update sequence element #0 to a sequence
dict
需要的是像这样的列表:
>>> zip(lowercase[:5], range(5))
<<<
[('a', 0),
('b', 1),
('c', 2),
('d', 3),
('e', 4)]
元组中的第一个元素会变成键,第二个元素会变成值。
>>> dict(zip(lowercase[:5], range(5)))
<<<
{'a': 0,
'b': 1,
'c': 2,
'd': 3,
'e': 4}