【发布时间】:2009-10-23 19:42:16
【问题描述】:
我正在尝试从存储的列表中创建 Python 字典。第一种方法有效
>>> myList = []
>>> myList.append('Prop1')
>>> myList.append('Prop2')
>>> myDict = dict([myList])
但是下面的方法不行
>>> myList2 = ['Prop1','Prop2','Prop3','Prop4']
>>> myDict2 = dict([myList2])
ValueError: dictionary update sequence element #0 has length 3; 2 is required
所以我想知道为什么第一种方法使用 append 有效,而第二种方法无效? myList 和 myList2 有区别吗?
编辑
再次检查myList2实际上有两个以上的元素。更新了第二个示例以反映这一点。
【问题讨论】:
-
"myList 和 myList2 有区别吗?"
myList == myList2说什么?这两种方法都适用于 Python 2.5。 -
我在 2.5.2 或 3.1.1 中都没有看到这个错误 - 确定某处没有错字吗?这些列表应该相同。
-
他们都为我工作。我猜在第二个示例中,您实际上并没有在
dict([mylist2])中输入方括号。你确定不是dict(mylist2)写的吗? -
正如其他人所说,您发布的代码应该可以工作。但是你填充
myList并在dict()构造函数中使用它的方式意味着你用它做错了,你得到的错误支持了这个含义。最可能的问题是myList2中包含两个以上的元素,或者当您将myList2传递给dict()时,您没有将它包装在另一个可迭代对象中。如果您在此处使用 2 元组而不是列表,则可以解决其中任何一个问题,因为这是表示键值对的更好结构。 -
啊,是的,正如我所怀疑的,您使用
myList2作为通用列表。这是不正确的——当你使用它时,它需要恰好有两个元素(一个键和一个对应的值)。
标签: python python-2.5