2016-10-26 3 views
-4
$class->categories[$cat->category_parent_id][]=$cat; 

Я разработал сценарий, где я хочу написать этот php-код в python.Как это записать в Python?

Как создать массив categories в python?

До сих пор я сделал это:

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

Но я не уверен, если это правильное выполнение.

+4

StackOverflow не является сервисом перевода кода – naomik

+1

одним способом может стать изучение python. другой - нанять стажера, который знает python. –

ответ

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) 

Однако, если ключи Дон» t существует, вы должны убедиться, что они созданы и что их значение установлено на list при первом доступе. Самое компактное обозначение, что в Python является dict.setdefault метод:

klass.categories.setdefault(cat.category_parent_id, []).append(cat) 

Если categories[cat.category_parent_id] существует, он возвращается, и вы можете append к нему. Если он не существует, он создается и инициализируется до [], а затем возвращается.

+0

Я забыл упомянуть, что 'cat' здесь - это запись, полученная путем запуска запроса mysql. Это будет иметь значение или нет? –

+0

Нет? Да? Может быть? Это зависит от того, что именно это, что вы хотите, и представляет ли он любую проблему, как есть. – deceze

+0

'для ребенка в категориях [cat [" category_parent_id "]]:' это правильная реализация для извлечения данных из 'категорий'? –

Смежные вопросы