For in循环over dict给出TypeError:字符串索引必须是整数

2024-05-16 03:05:06 发布

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

我有一个包含11个项目的dict,下面是Spyder variable explorer的scree快照:

enter image description here

def buildDF(result_set):
    master_dm = []
    for p in result_set:
        rows = p['reports']
        master_dm.append(rows)
    return(master_dm)

sessions1DF = buildDF(sessions1)
TypeError: string indices must be integers

当我查看sessions1时,我可以看到上面的屏幕上有11个条目。双击其中一个项目将显示每个项目中的报告:

enter image description here

为什么会出现这个错误?我如何建立一个新的列表,包含11个嵌套在结果集中每个项目下的报表列表?在


Tags: 项目master列表dmresultvariable快照dict
2条回答

在遍历字典时,尝试调用dict.items()方法:

sessions1 = {10000:'val1',100000:'val2',2000:'val3',3000:'val4',4000:'val5',5000:'val6',6000:'val7',7000:'val8',8000:'val9',9000:'val10',10000:'val11'}
def buildDF(result_set):
    master_dm = []
    for k,v in result_set.items():
        master_dm.append(v)
    return(master_dm)

sessions1DF = buildDF(sessions1)

print(sessions1DF)
# ['val11', 'val2', 'val6', 'val5', 'val3', 'val8', 'val4', 'val9', 'val7', 'val10']

类似的问题可以在这里找到:Iterating over dictionaries using 'for' loops

从我能收集到的信息来看,session1是一个包含其他字典的字典,因此要按您希望的方式迭代这些项,您需要在字典上使用.items()方法,即:

def buildDF(result_set):
    master_dm = []
    for key, p in result_set.items():
        rows = p['reports']
        master_dm.append(rows)
    return(master_dm)

您现在所做的只是迭代键列表,这些键是字符串。这意味着原始代码中的p['reports']行正试图访问它正在查看的任何键的'reports'元素。这是不能做到的,因为字符串只能用整数索引-因此会出现错误。在

相关问题 更多 >