Mat*_*Cox -2 python python-3.x
如何通过一个项目列表克服TypeError?我有此字典清单:
ADSR_Dbs = {'Tables' : (
{'Table' : 'ACSL',
'columns': ('ID','Loc','Pos')
'type': ('int','varchar','varchar')
}
)}
Run Code Online (Sandbox Code Playgroud)
这会产生TypeError:当我尝试这样做时,字符串索引必须是整数:
for DBTables in ADSR_Dbs['Tables']:
print("Table: " + DBTables['Table'])
Run Code Online (Sandbox Code Playgroud)
但是,如果列表中还有更多项目,可以这样:
ADSR_Dbs = {'Tables' : (
{'Table' : 'ACSL',
'columns': ('ID','Loc','Pos')
'type': ('int','varchar','varchar')
},
{'Table':None,
'columns':(None),
'type':(None)
}
)}
Run Code Online (Sandbox Code Playgroud)
有时列表中只有一项,所以如何避免TypeError?
在Python中,用()括号创建元组。但是这些符号还有很多提及:对于函数,对于代码的逻辑块等。因此,如果要创建一个元素元组,则应将其编写为:(element, )用逗号分隔,这样Python解释器将知道它确实是一个元组,而不是括号中的代码。就您而言,您只有一个普通的字典。如果您想要一堆字典,您应该写一个逗号:
ADSR_Dbs = {'Tables' : (
{'Table' : 'ACSL',
'columns': ('ID','Loc','Pos'),
'type': ('int','varchar','varchar')
},
^
|
+----------------- HERE
)}
Run Code Online (Sandbox Code Playgroud)
因此,代码将是:
ADSR_Dbs = {'Tables' : (
{'Table' : 'ACSL',
'columns': ('ID','Loc','Pos'),
'type': ('int','varchar','varchar')
},
)}
for DBTables in ADSR_Dbs['Tables']:
print("Table: " + DBTables['Table'])
Run Code Online (Sandbox Code Playgroud)
Table: ACSL
但是,当在一个元组中有多个元素时,Python会知道它是一个元组,因此当您有2个以上的元素时,您的代码将开始工作。请注意,该列表没有此问题。[element]是一个元素列表,您不需要逗号。
| 归档时间: |
|
| 查看次数: |
45 次 |
| 最近记录: |