我創建一個列表,然後訪問這樣一個元素:爲什麼我無法通過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']