在PHP中,我可以这样做
$a['name'][] = 'el1';
在Python中,我必须这样做:
a = {}
a['name'] = []
a['name'].append('el1')
上述方法的问题在于,在迭代时我在下一个循环中丢失a['name']
的值,因为我正在将a['name']
重新初始化为空列表。
有没有办法将项目附加到列表而不必先用空列表初始化?
答案 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')