dict函数有些问题

时间:2011-05-08 18:29:52

标签: python

我正在尝试使用dict函数将列表转换为字典。

inpu = input.split(",")
dic = dict(inpu)

上面的代码尝试在split上获取字符串并',',之后我使用dict函数将列表转换为字典。

然而,我收到此错误:

  

ValueError:字典更新序列元素#0的长度为6; 2是必需的

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:20)

dict期望一个可迭代的2元素容器(如元组列表)。你不能只传递一个项目列表,它不知道什么是关键,什么是价值。

您正在尝试这样做:

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

答案 1 :(得分:3)

正如Python Data structures文档中所列。 dict()构造函数直接从存储为元组的键值对列表构建字典。

所以inpu数组必须是每个位置的形式('key','value'),例如

>>> dict([('sape', 4139), ('guido', 4127), ('jack', 4098)])
{'sape': 4139, 'jack': 4098, 'guido': 4127}

您的输入数组大小可能大于2

答案 2 :(得分:0)

字典是一个键值对,这就是为什么它需要长度为2的列表才能将键与值匹配。您正在将输入拆分为平面列表,这就是Python在这种情况下抱怨的原因 - 它不知道要指定什么作为键以及指定为值的内容。