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

时间:2015-02-25 01:03:46

标签: python loops

在PHP中,我可以这样做

$a['name'][] = 'el1';

在Python中,我必须这样做:

a = {}
a['name'] = []
a['name'].append('el1')

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

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

4 个答案:

答案 0 :(得分:9)

您可以使用defaultdict模块:

from collections import defaultdict
a = defaultdict(list)

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

 a['name'].append('el1')

并不担心。

希望有所帮助!

答案 1 :(得分:2)

所以,你表达的方式不是,你只能append对存在的东西。也就是说,你根本不必附加到这个,你可以这样做:

a = {'name': ['el1']}

无需手动创建您的结构。

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

a.setdefault('name', []).append('el1')

get的第二个参数也为您提供了一个默认值,表示如果name不存在,请改为附加到空列表中。

答案 2 :(得分:0)

我认为你要求的是这样的东西:

a = {}

if 'name' not in a:
    a['name'] = []

a['name'].append('el1')

另外,您可能需要查看Python's defaultdict datatype,看看这对您的目的是否更好。

答案 3 :(得分:0)

检查名称是否存在于字典的键集合中

a={}

if 'name' not in a.keys():
    a['name']=[]

a['name'].append('el1')