我创建一个列表,然后访问这样一个元素:为什么我无法通过Python中的键访问列表?
list = []
list.insert(42, "foo")
list.insert(43, "bar")
list.insert(44, "baz")
print(list[43])
和我有如下因素的错误:
print(list[43]) IndexError: list index out of range
有什么不对?我必须使用dictionary来做到这一点吗?
我创建一个列表,然后访问这样一个元素:为什么我无法通过Python中的键访问列表?
list = []
list.insert(42, "foo")
list.insert(43, "bar")
list.insert(44, "baz")
print(list[43])
和我有如下因素的错误:
print(list[43]) IndexError: list index out of range
有什么不对?我必须使用dictionary来做到这一点吗?
列表中没有“键”,只有索引。
您的代码无法按照您期望的方式工作的原因是当index
已超过列表的末尾时,list.insert(index, obj)
未用“空白”条目填充列表;它只需将obj
附加到列表中。
你可以使用一个字典这样的:
In [19]: l = [None] * 50
In [20]: l[42] = "foo"
In [21]: l[43] = "bar"
In [22]: l[44] = "bar"
In [23]: print(l[43])
bar
附注:
In [14]: d = {}
In [15]: d[42] = "foo"
In [16]: d[43] = "bar"
In [17]: d[44] = "baz"
In [18]: print(d[43])
bar
或者,你可以用一个足够大的数量的条目预先初始化列表我建议你不要调用变量list
,因为它会影响内建的list()
。
是的,你必须为此使用字典。列表总是从0开始的连续指数
是你有什么是元组,没有钥匙参与
打印(列表[1])会工作,但是,这是不是你的列表想做。
错误是因为列表[41]不存在。
如果列表[41]存在,并且是最后一个元素list.insert(42,“foo”)等价于list.append(“foo”),则返回 else if if list有更多的元素值将被插入中间
我误解了list.insert(i, x)
做什么。它不会替换第i
位置上的元素,但将该元素插入此位置,将其余部分移动。如果i
th元素不存在,则将元素插入列表的末尾。
该实施例示出这样的:
list = []
list.insert(42, "foo")
list.insert(43, "bar")
list.insert(44, "baz")
list.insert(43, "qux") # qux is after baz, because baz in in fact at the index 2.
print(list)
list.insert(3, "test") # test is inserted between baz and qux,
# because baz is at index 2 and qux at index 3.
print(list)
输出:
['foo', 'bar', 'baz', 'qux']
['foo', 'bar', 'baz', 'test', 'qux']