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

저는이 PHP 코드를 파이썬으로 작성하고자하는 스크립트를 개발했습니다.어떻게 이것을 파이썬으로 작성할 수 있습니까?

categories 배열을 어떻게 파이썬으로 만들 수 있습니까?

는 지금까지이 짓을 :

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

을하지만 이것은 올바른 구현 있는지 확실하지 않다.

+4

StackOverflow는 코드 번역 서비스가 아닙니다 – naomik

+1

편도는 python을 배울 수 있습니다. 다른 하나는 파이썬을 아는 인턴을 고용하는 것입니다. –

답변

4

하자의 해체는 :

$class->categories 

이것은 $class 개체의 categories 속성을 액세스합니다. 파이썬에서의 그 : 이것은 배열의 특정 키에 액세스

categories[$cat->category_parent_id] 

, 파이썬에있을 것이라고 : 당신은이 작업을 수행 할 수 있기 때문에

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

우리는 categories 여기 dict이라고 가정합니다 dict의 키

categories[cat.category_parent_id] 

이제 까다로운 부분 :

...[] = $cat 

그러면 $cat이 배열로 푸시됩니다. 파이썬에서는 에 값인 append을 의미합니다. 존재하지 않으면 PHP는 암시 적으로 필요한 새 하위 배열을 만듭니다. 파이썬은 그렇지 않습니다. 이것은 약간의 추가 고려가 필요한 유일한 부분입니다. 당신이 알아야 할 것은 categories[cat.category_parent_id]이 귀하의 dict에 이미 존재하는지 또는 그 과정에서 생성할지 여부입니다. 당신이 categorieslist s의 dict가하는 모든 cat.category_parent_id 키가 이미 미리 채워져있는 경우가 존재 알고 있다면

가, 다음이만큼 간단합니다 그러나

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

, 키의 경우 돈 ' 존재하지 않는다면 생성 된 것을 확인하고 처음으로 액세스 할 때 값이 list으로 설정되어야합니다. 파이썬에서 그에게 가장 컴팩트 한 표기법은 dict.setdefault 방법 : categories[cat.category_parent_id]이있는 경우

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

, 그것은 반환 당신은 그것에 append을 할 수 있습니다. 존재하지 않으면 생성되고 []으로 초기화 된 다음 반환됩니다.

+0

내가 언급 한 것을 잊어 버린 것은 여기서'cat'은 mysql 쿼리를 실행하여 얻은 레코드입니다. 그것은 중요 할 것인가? –

+0

아니요? 예? 아마도? 그것은 정확히 무엇인지, 당신이 원하는 것과 문제가있는 것인지 여부에 달려 있습니다. – deceze

+0

'[cat [ "category_parent_id"]] :'이것은 카테고리에서 데이터를 검색하기위한 올바른 구현입니까? –

관련 문제