|
在Python中,dict构造函数接受一个可迭代对象,其中每个元素本身必须是一个包含两个元素的可迭代对象(如元组),分别作为键和值。
dict1 = dict((('F',70),('i',105))) 正确的原因:
参数是外层元组 (('F',70), ('i',105)),其中包含两个内层元组。每个内层元组(如 ('F',70))提供键值对。
dict会遍历外层元组的每个元素(即每个键值对),正确生成字典 {'F':70, 'i':105}。
dict2 = dict((('F',70))) 错误的原因:
参数实际是单个元组 ('F',70),而外层括号 (('F',70)) 并未创建新元组(因缺少逗号)。
dict会尝试遍历该元组的每个元素('F'和70),期望每个元素是键值对。但 'F'是长度为1的字符串,无法拆解为两个元素,导致 ValueError。
若需单个键值对,应传递包含一个元组的可迭代对象:dict2 = dict((('F',70),))
此时,参数为 (('F',70),),外层元组包含一个键值对元组,dict能正确生成 {'F':70}。
dict1 = dict((('F',70),('i',105)))
dict2 = dict((('F',70),))
print(dict1 )
print(dict2 )
{'F': 70, 'i': 105}
{'F': 70} |
|