我有一个字典,里面有11个项目,这是Spyder变量浏览器的碎石镜头:
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
当我查看session1时,可以看到上面的每个屏幕有11个项目。双击其中一个项目可显示每个项目内的报告:
为什么会出现此错误?如何使用11个报告列表构建一个新列表,这些列表嵌套在result_set中的每个项目下?
答案 0 :(得分:1)
遍历字典时,尝试调用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']
答案 1 :(得分:0)
可以在这里找到类似的问题:Iterating over dictionaries using 'for' loops
据我所知,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'
元素。由于字符串只能用整数索引,因此无法完成此操作。