我正在尝试使用dict
函数将列表转换为字典。
inpu = input.split(",")
dic = dict(inpu)
上面的代码尝试在split
上获取字符串并','
,之后我使用dict
函数将列表转换为字典。
然而,我收到此错误:
ValueError:字典更新序列元素#0的长度为6; 2是必需的
有人可以帮忙吗?
答案 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在这种情况下抱怨的原因 - 它不知道要指定什么作为键以及指定为值的内容。