【问题标题】:Receiving "IndexError: list index out of range" when using count使用计数时收到“IndexError:列表索引超出范围”
【发布时间】:2015-02-06 06:12:27
【问题描述】:

所以我尝试使用标准计数循环通过一组规则,但它返回错误:

IndexError: list index out of range

这是代码

    alphabetList = list(string.ascii_lowercase)
    alphabetList.extend(list(string.ascii_lowercase))
    alphabetDict = {}
    count = 0
    while count <= len(alphabetList):
        item1 = alphabetList[count]
        item2 = item1
        alphabetDict[item1] = item2
        count += 1

有什么想法吗?

【问题讨论】:

  • 去掉等号,只使用减号。 while count &lt; len()
  • 这段代码到底是什么意思?它产生一个将字母映射到自己的字典。为什么?
  • 劳伦斯:谢谢,我会试试的。 @Daniel 我正在为 GCSE 作业创建凯撒密码。是的,好玩。更改字母时,字典会有所帮助。我可能没有以最有效的方式完成它,但是当代码工作时我会越过那座桥! ;)

标签: python string list dictionary indexing


【解决方案1】:
while count <= len(alphabetList):

您将超出此处列表的末尾。将&lt;= 更改为&lt;

while count < len(alphabetList):

或者,使用for 代替while

import string

alphabetList = list(string.ascii_lowercase)
alphabetList.extend(list(string.ascii_lowercase))
alphabetDict = {}
for count in range(len(alphabetList)):
    item1 = alphabetList[count]
    item2 = item1
    alphabetDict[item1] = item2

另外,直接遍历字母而不使用count 值。

import string

alphabetDict = {}
for item in string.ascii_lowercase:
    alphabetDict[item] = item

再一次,通过在初始化器中将键和值压缩在一起,构造没有循环的字典。

import string
alphabetDict = dict(zip(string.ascii_lowercase, string.ascii_lowercase))

【讨论】:

  • 感谢您的帮助。 :)
猜你喜欢
  • 2011-10-31
  • 2015-06-26
  • 1970-01-01
  • 1970-01-01
  • 2016-06-20
相关资源
最近更新 更多