2011-10-27 3 views
1

나는 다양한 속성과 함께 미국의 목록을 가지고 있으며 다양한 속성을 가진 도시 내에서이 모든 것이 시작시 현재 텍스트 파일에서 동적으로 만들어 져야합니다. 파이썬에서클래스가이 데이터를 보관하는 가장 좋은 방법입니까? C++?

, 읽기 쉽도록 약간 깨진 구문으로,이 같은 것을 표현 될 수있는 DICT 매트릭스 (즉, 끔찍한 소리)를 사용하는 것이다 : 나는 물론 클래스를 사용할 수

locations = { 
    "Alabama": { 
     "url" : "www.domain.com/page.php", 
     "users": 8 
     "cities" : { 
      "city1": { 
       "url" : "www.domain.com/page.php", 
       "users": 2 
      } 
      "city2": { 
       "url" : "www.domain.com/page.php", 
       "users": 1 
      } 
     } 
    } 
} 

,하지만 그건 단지 그것을 표현할 필요는 없습니다. 그런 작은 목록을위한 파이썬에서 dict는 훨씬 더 유용 할 것이고 나는 현재 클래스 나 db의 추가 기능을 필요로하지 않을 계획이다. 조금 더 자세한 내용이있을 것입니다. 물론 주마다 모든 주, 아마도 주 당 0-10 개의 도시/지역이 있지만 비교적 작은 규모가 될 것입니다.

C++에서 중첩 된 unordered_map을 사용하면 비슷한 결과를 얻을 수 있지만, 데이터 형식을 정렬되지 않은 맵과 혼합 할 수 없으므로 "사용자"는 int 대신 문자열이어야합니다. 좀 더 적합한 타입의 타입을 모르고있다.)하지만, 나는 대부분의 경우에 문자열을 사용하여 쉽게 만들 수있다. 그러나 나는이 질문을하기 위해 무엇을 만들었 는가가 헤더 선언을 만들 때 나는 그것이 정말로보기 흉하고 거의 보이지 않는다는 것을 깨달았다. 읽을 수있는. 그것은 const로 만들어 질 것입니다. 또한 fwiw로 만들어 지거나 그렇지 않으면 파이썬과 같이 즉시 만들 수 있습니다. 비록 내가 항상 그들을 따르지는 않겠지 만, 최선의 조언을 구하는 방법은 여기에 있습니다. 점수를 얻거나 다른 방법으로 출판한다면이 데이터를 나타낼 수 있습니까?

+0

'cities'를 배열로 지정했습니다. – Pablo

답변

0

JSON 또는 XML로 저장하고 JSON 또는 XML 판독기 라이브러리를 가져 오는 이유는 무엇입니까?

+0

여분의 라이브러리를 설치하는 것 이외에 때때로 – Nacht

+0

저장할 수도 있지만 JSON은 괜찮은 것처럼 보이지만 원래 질문은 파일을 구문 분석하는 것이 아니라 객체로 데이터를 나타내는 방법에 관한 것입니다. – mergeconflict

+0

저장 방법은 질문의 일부였습니다. 왜냐하면 그는 표현의 추함에 대해 언급했기 때문입니다. – Nacht

4

State은 항상 동일한 필드 (url, userscities)를 가지고 있다고 가정하면 클래스를 만드는 것이 좋습니다. 마찬가지로 City. State은 그것의 어떤하여 name 필드가 당신의 위치에 대한

  • 당신의 위치에 대한 map<string, State>, 각 상태에서 도시의 map<string, City>, 또는 ...
  • set<State> (: 그럼 당신도 함께 종료됩니다 각 상태의 도시에 대한 set<City> (다시 각각은 name 필드가 있음).

가능한 한 입력 시스템이 작동하도록하려는 습관을 갖고 싶습니다.

+0

'set'에 관한 한 참고 사항 : 그들은 포함 된 객체에 대한 변경을 방지하는 불행한 속성이 있습니다. 속성의 경우 문제가되지 않을 수도 있지만 (해당 속성이 변경되지 않는다고 가정) 사용자 수에 따라 예를 들어 성가심 일 수 있습니다. –

+0

std :: set에 대한 자세한 내용은 고유 한 요소 만 저장한다는 것입니다. 상태에 동일한 이름의 두 도시가 있고 도시에서 이름이 색인으로 사용되는 경우 문제가 될 수 있습니다. –

0

간단히 말해서 : 예. 당신은 당신의 도시와 주를위한 수업을 원합니다.

각 주 및 도시마다 고유 한 ID가 할당 된 것처럼 할 수 있습니다. 해당 ID는 빠른 검색을 위해 배열에 대한 인덱스가 될 수 있습니다.

그러면 각 도시에서 ID를 통해 회원 상태를 쉽게 파악할 수 있습니다.

정말 예/아니오 질문을했기 때문에 그 방법을 구성하는 좋은 출발점이되어야합니다.
나머지는 독자의 연습 문제로 남겨 둡니다. (답변에서 정당하게 말할 수있는 것은 매우 드뭅니다)

관련 문제