2011-11-16 58 views

回答

9

列表中没有“键”,只有索引。

您的代码无法按照您期望的方式工作的原因是当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

是的,你必须为此使用字典。列表总是从0开始的连续指数

0

是你有什么是元组,没有钥匙参与

打印(列表[1])会工作,但是,这是不是你的列表想做。

1

错误是因为列表[41]不存在。

如果列表[41]存在,并且是最后一个元素list.insert(42,“foo”)等价于list.append(“foo”),则返回 else if if list有更多的元素值将被插入中间

1

我误解了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'] 

Codepad example

相关问题