2016-10-26 18 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 

これは$classオブジェクトのcategoriesプロパティにアクセスします。 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では、を意味し、値はlistです。 PHPは存在しない場合、必要に応じて暗黙的に新しいサブ配列を作成します。 Pythonはそうではありません。これは少しだけ追加の検討が必要な唯一の部分です。あなたが知る必要があるのは、あなたのdictに既にcategories[cat.category_parent_id]が存在するのか、それともそれをプロセスで作成するのかです。

あなたはそれが存在することがわかっている場合はcategoriesはすべてcat.category_parent_idキーがすでに事前に移入されているdictlistのsのであれば、それはこのような単純なのです:

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

ただし、キーのドン」最初にアクセスされたときに、その値が作成され、その値がlistに設定されていることを確認する必要があります。

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

categories[cat.category_parent_id]が存在する場合、それが返され、あなたがそれにappendすることができます:Pythonでそのための最もコンパクトな表記法はdict.setdefault方法です。存在しない場合は作成され、[]に初期化されてから返されます。

+0

私が言いたいことは、ここの 'cat'はmysqlクエリを実行して得たレコードです。それは重要かどうか? –

+0

いいえ?はい?多分?それはまさにそれが何であるか、あなたが望むもの、それがどんな問題をもたらすかによって異なります。 – deceze

+0

'[cat [" category_parent_id "]]:'これは、 'categories'からデータを取得する正しい実装ですか? –

関連する問題