如何在不必初始化列表的情况下附加到Python列表?

Isa*_*cox 2 python loops

在PHP中,我可以这样做

$a['name'][] = 'el1';
Run Code Online (Sandbox Code Playgroud)

在Python中,我必须这样做:

a = {}
a['name'] = []
a['name'].append('el1')
Run Code Online (Sandbox Code Playgroud)

上述方法的问题在于我a['name']在迭代时丢失了下一个循环的值,因为我正在重新初始化a['name']为空列表.

有没有办法将项目附加到列表而不必先用空列表初始化?

Rac*_*ers 10

您可以使用defaultdict模块:

from collections import defaultdict
a = defaultdict(list)
Run Code Online (Sandbox Code Playgroud)

使用此设置,模块在首次访问时初始化为空列表,因此您可以执行以下操作:

 a['name'].append('el1')
Run Code Online (Sandbox Code Playgroud)

而不用担心它.

希望有所帮助!


Sla*_*off 5

因此,按照您所说的“不”的方式,您只能append针对存在的事物。也就是说,您根本不必附加到此内容,您可以这样做:

a = {'name': ['el1']}
Run Code Online (Sandbox Code Playgroud)

无需像那样手动创建您的结构。

如果您想在尝试附加到列表之前检查键是否存在,您可以执行以下操作:

a.setdefault('name', []).append('el1')
Run Code Online (Sandbox Code Playgroud)

to 的第二个参数get也给你一个默认值,如果name不存在,则附加到一个空列表。