2024-03-28 06:46:46 发布
网友
我想在一个嵌套循环中动态创建多个文件名,比如说为2个参与者创建,每个参与者有4个不同的会话。我的目标是创建如下文件名:
我的代码是:
filename = {} for y in range(0,4): for i in range(0,2): filename[y][i] = 'Learning_S%s_P%s.xlsx' % (1+y,1+i)
但是,我收到KeyError:0。我被阻止了,找不到解决方案。任何帮助都将不胜感激。你知道吗
非常感谢
与字符串无关。 你得到KeyError是因为你写了
filename[y][i]
写
filename[y] = {} filename[y][i] = 'whatever'
(您可以使用format()而不是%s语法。)
建议:面对这类问题时,尽量把几句话分开。你知道吗
这条线本身很好:
filename[y][i] = 'Learning_S%s_P%s.xlsx' % (1+y,1+i)
但当它引发一个异常时,就把它一分为二:
value = 'Learning_S%s_P%s.xlsx' % (1+y,1+i) filename[y][i] = value
很明显,错误是由第二行引起的,与字符串无关。你知道吗
这个问题与您的字符串格式没有任何关系。尝试在dict中设置项时会出现错误。这是因为您尝试在嵌套dict中设置项,而从未创建内部字典:filename[y]不存在,因此无法执行filename[y][i]。你知道吗
filename[y]
您可以通过在外循环中创建dict来解决此问题:
filename = {} for y in range(0,4): filename[y] = {} for i in range(0,2): filename[y][i] = 'Learning_S%s_P%s.xlsx' % (1+y,1+i)
尽管我会质疑dict是否是这里的正确数据结构:似乎嵌套列表更合适:
filename = [] for y in range(0,4): inner = [] for i in range(0,2): inner.append('Learning_S%s_P%s.xlsx' % (1+y,1+i)) filename.append(inner)
与字符串无关。 你得到KeyError是因为你写了
写
(您可以使用format()而不是%s语法。)
建议:面对这类问题时,尽量把几句话分开。你知道吗
这条线本身很好:
但当它引发一个异常时,就把它一分为二:
很明显,错误是由第二行引起的,与字符串无关。你知道吗
这个问题与您的字符串格式没有任何关系。尝试在dict中设置项时会出现错误。这是因为您尝试在嵌套dict中设置项,而从未创建内部字典:
filename[y]
不存在,因此无法执行filename[y][i]
。你知道吗您可以通过在外循环中创建dict来解决此问题:
尽管我会质疑dict是否是这里的正确数据结构:似乎嵌套列表更合适:
相关问题 更多 >
编程相关推荐