这样可行:
In [104]: i = [(1, 'a')]
In [105]: dict(i)
Out[105]: {1: 'a'}
似乎我有一个包含一个元组的列表,我调用了dict()函数,它返回了一个字典。
由于电话原因,我没有改变:
In [114]: i
Out[114]: [(1, 'a')]
如果我试试这个:
In [108]: i = (1, 'a')
In [109]: dict(i)
我得到TypeError:无法将字典更新序列元素#0转换为序列。
我认为这是因为元组是不可变的。如果是的话,我没有改变任何事情,对吧?
在上面的工作示例中,我仍然只是我。
答案 0 :(得分:1)
来自python文档(link):
class dict(** kwarg)
class dict(mapping,** kwarg)
class dict(iterable,** kwarg)
返回从可选位置参数和可能为空的关键字参数集初始化的新字典。
如果没有给出位置参数,则创建一个空字典。如果 给出一个位置参数,它是一个映射对象,a 使用与映射相同的键值对创建字典 宾语。否则,位置参数必须是可迭代对象。 iterable中的每个项目本身必须是一个只有两个的可迭代项 对象。每个项目的第一个对象成为新项目的关键 字典,第二个对象的对应值。如果一把钥匙 不止一次出现,该键的最后一个值变为 新词典中的相应值。
如果给出关键字参数,则为关键字参数及其值 被添加到从位置参数创建的字典中。如果一个 正在添加的密钥已经存在,来自关键字的值 参数替换位置参数中的值。
您正在传递一个可迭代的元组,因此python迭代它尝试扩展2(键和值)中的成员并失败,因为成员不是可以分配给Key和value的2成员可迭代。
答案 1 :(得分:0)
dict()
希望您传递mapping object或可迭代的键值对(每个键值对必须是2个元素的可迭代对象)。
后两个元组的列表,单个2元组都不是。
答案 2 :(得分:0)
dict
需要一系列序列,所以当你给它一个一维序列时它会失败。您可以使用元组而不是列表。
d = dict(((1, 1), (2, 2)))
给我们
{1: 1, 2: 2}