Python 对于dict上的in-loop给出了TypeError:字符串索引必须是整数

Python 对于dict上的in-loop给出了TypeError:字符串索引必须是整数,python,dictionary,for-loop,Python,Dictionary,For Loop,我有一个dict,里面有11个项目,这是Spyder variable explorer的屏幕快照: 当我查看sessions1时,我可以看到它是一个dict,上面每个屏幕上有11个项目。双击其中一个项目可显示每个项目内的报告: 为什么会出现此错误?如何使用嵌套在结果集中每个项目下的11个报告列表构建新列表?类似问题可在此处找到: 据我所知,sessions1是一个包含其他词典的词典,因此,要按您的意愿迭代项目,您需要在词典上使用.items()方法,即: def buildDF(resul

我有一个dict,里面有11个项目,这是Spyder variable explorer的屏幕快照:

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


为什么会出现此错误?如何使用嵌套在结果集中每个项目下的11个报告列表构建新列表?

类似问题可在此处找到:

据我所知,sessions1是一个包含其他词典的词典,因此,要按您的意愿迭代项目,您需要在词典上使用
.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'
元素。这是无法做到的,因为字符串只能用整数索引-因此会出现错误。

类似的问题可以在这里找到:

据我所知,sessions1是一个包含其他词典的词典,因此,要按您的意愿迭代项目,您需要在词典上使用
.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'
元素。这是无法做到的,因为字符串只能用整数索引-因此会出现错误。

在字典上迭代时,请尝试调用
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']

迭代字典时,请尝试调用
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']