首页 > 解决方案 > Python:初始化列表和字典

问题描述

我是 Python 新手。在初始化列表时

mylist = list()
mylist[0]="hello"

给出错误。它只有效

mylist.append("hello")

但如果我对字典做同样的事情

mydict ={}
mydict["one"]="hello"

有用。为什么我不需要做

mydict['one'].append('hello')

为什么不同结构的情况不同。

标签: python

解决方案


如果你像这样更新一个字典:

d['c'] = 3

......没有必要d['a']d['b'](或任何项目,就此而言)出现在该字典中。字典项的键并不意味着您的 dict 对象的任何特定结构属性。

但是,如果您想更新这样的列表:

l[5] = 'a'

...索引 0 到 5 绝对必须存在。索引不仅用作列表中元素的句柄,而且还具有结构属性。如果l[5]确实存在,您可以绝对确定索引 0 到 4 也可以。你需要那种确定性。

想象一下你可以l[5] = 'a'在一个空列表上做。会len(l)返回什么?1?6?这两种情况都会导致失败:

for i in range(len(l)):
    print(l[i])

有人可能会争辩说,如果 index-1 已经存在,或者如果列表为空并且所需的索引为 0,则l[<index>] = 'a' 可以隐式附加该值。为了使其可靠地工作,您需要确保index-1 在添加值之前存在,例如这一点,而当使用 append() 时,您可以保证您的值将被添加到列表中(除了内存不足等潜在的边缘情况)。


推荐阅读