如何解决Python字典类型错误列表中只有一项的问题?

2024-09-30 06:15:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我怎样才能用一个项目列表克服类型错误? 我有一本字典:

    ADSR_Dbs = {'Tables' : (
    {'Table' : 'ACSL',
    'columns': ('ID','Loc','Pos')
    'type': ('int','varchar','varchar')
    }
)}

它产生TypeError:字符串索引必须是整数 当我尝试这样做时:

for DBTables in ADSR_Dbs['Tables']:
    print("Table: " + DBTables['Table'])

但如果列表中有更多项,则可以如下所示:

ADSR_Dbs = {'Tables' : (
    {'Table' : 'ACSL',
    'columns': ('ID','Loc','Pos')
    'type': ('int','varchar','varchar')
    },
    {'Table':None,
    'columns':(None),
    'type':(None)
    }
)}

有时列表中只有一项,那么如何避免类型错误呢?你知道吗


Tags: columnsposnoneid类型列表tablestype
1条回答
网友
1楼 · 发布于 2024-09-30 06:15:28

在Python中,元组是用()括号创建的。但是这些符号还有很多其他的含义:对于函数,对于代码的逻辑块等等,所以如果你想创建一个单元素元组,你应该用逗号把它写成:(element, ),这样Python解释器就会知道它实际上是一个元组,而不是括号中的代码。在你的例子中,你只有一个普通的dict。如果你想要一个dict元组,你应该写一个逗号:

ADSR_Dbs = {'Tables' : (
    {'Table' : 'ACSL',
    'columns': ('ID','Loc','Pos'),
    'type': ('int','varchar','varchar')
    },
     ^
     |
     +        - HERE
)}

所以代码是:

ADSR_Dbs = {'Tables' : (
    {'Table' : 'ACSL',
    'columns': ('ID','Loc','Pos'),
    'type': ('int','varchar','varchar')
    },
)}
for DBTables in ADSR_Dbs['Tables']:
    print("Table: " + DBTables['Table'])

Table: ACSL

但是当一个元组中有几个元素时,Python就会知道它是一个元组,所以当您有2+个元素时,代码就开始工作了。注意,列表没有这个问题。[element]是一个单元素列表,不需要逗号。你知道吗

相关问题 更多 >

    热门问题