python - Python:初始化列表和字典
问题描述
我是 Python 新手。在初始化列表时
mylist = list()
mylist[0]="hello"
给出错误。它只有效
mylist.append("hello")
但如果我对字典做同样的事情
mydict ={}
mydict["one"]="hello"
有用。为什么我不需要做
mydict['one'].append('hello')
为什么不同结构的情况不同。
解决方案
如果你像这样更新一个字典:
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() 时,您可以保证您的值将被添加到列表中(除了内存不足等潜在的边缘情况)。
推荐阅读
- c++11 - 可变参数函数模板参数匹配
- sql - 找出过去 10 年收入最高的人
- redhat - 我们怎么能在两个不同版本的 nuxeo 上拥有相同的文件?
- php - 自我终止如何在laravel 8中使用模态打开每个帖子
- python - input_file_name() 在处理镶木地板和具有多个分区的表时返回空字符串
- jquery - 如何使用ajax将变量从jquery发送到php文件
- python - 在 Jupyter Notebook 中显示导入类的日志记录
- android - 如何在 Recycler 视图中添加多个倒数计时器?
- javascript - 摩卡咖啡:只对一个特定的描述保释
- visual-studio-2019 - 如何修复 F1.Help Visual Studio 2019 Pro