我怎么能用Python写这个?

时间:2016-10-26 08:38:02

标签: php python

$class->categories[$cat->category_parent_id][]=$cat;

我开发了一个脚本,我想在python中编写这个php代码。

如何在python中创建这个categories数组?

到目前为止,我已经这样做了:

categories_c.insert(row["category_parent_id"], row)

但我不确定这是否是正确的实施方式。

1 个答案:

答案 0 :(得分:4)

让我们解构:

$class->categories

这将访问categories对象的$class属性。在Python中:

klass.categories  # (class is a reserved keyword, using klass instead)

我们假设此处categoriesdict,因为您要执行此操作:

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,或者您是否要在此过程中创建它。

如果您知道它存在,如果categoriesdict listcat.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}}然后返回。