$class->categories[$cat->category_parent_id][]=$cat;
我开发了一个脚本,我想在python中编写这个php代码。
如何在python中创建这个categories
数组?
到目前为止,我已经这样做了:
categories_c.insert(row["category_parent_id"], row)
但我不确定这是否是正确的实施方式。
答案 0 :(得分:4)
让我们解构:
$class->categories
这将访问categories
对象的$class
属性。在Python中:
klass.categories # (class is a reserved keyword, using klass instead)
我们假设此处categories
为dict
,因为您要执行此操作:
categories[$cat->category_parent_id]
这将访问数组的特定键,在Python中将成为dict
的关键:
categories[cat.category_parent_id]
现在是棘手的部分:
...[] = $cat
这会将$cat
推送到数组中。在Python中,这意味着append
将值list
。如果不存在,PHP将根据需要隐式创建新的子数组。 Python没有。这是唯一需要额外考虑的部分。您需要了解的是categories[cat.category_parent_id]
中是否已存在dict
,或者您是否要在此过程中创建它。
如果您知道它存在,如果categories
是dict
list
个cat.category_parent_id
已经预填充了所有klass.categories[cat.category_parent_id].append(cat)
个密钥,那么它就像这样简单:
list
但是,如果密钥不存在,则必须确保它们已创建,并且在第一次访问它们时将其值设置为dict.setdefault
。 Python中最紧凑的表示法是klass.categories.setdefault(cat.category_parent_id, []).append(cat)
方法:
categories[cat.category_parent_id]
如果append
存在,则会返回,您可以[]
。如果它不存在,则创建它并初始化为{{1}}然后返回。