"이 그룹을 구성하기 위해 파이썬에서 사용해야하는 데이터 구조는 무엇입니까?"
하향식 프로그래밍의 핵심 원리는 구조에 대해 수행 할 작업뿐만 아니라 상대적인 빈도 및 기타 기준 (예 : 데이터 구조)을 결정할 때까지 추상 데이터 구조의 구현을 결정하지 않는 것입니다 단순성과 메모리 사용 등). 귀하는 해당 정보를 명시하지 않으므로 특정 구현을 권장 할 수 없습니다.
트리, 목록 내의 목록, 사전 내의 사전 등은 각각의 장점과 단점이 있습니다. 나는 한 점에 대해 궁금해. 구조에서 새 하위 수준의 모든 항목은 '02'로 시작하는 '02 .01.02 : Chris, Pete '를 제외하고는'01 '로 시작합니다. 그게 의도적 인거야? 그렇지 않으면 명백한 번호 매기기를 유지하면 몇 가지 간단한 구현이 열립니다.
귀하의 의견에 추가 된 정보를 사용하여 중첩 목록을 권장합니다. 각 데이터 항목에는 0으로 끝나는 일련의 인덱스가 있으며 그 밖의 다른 데이터 항목 및 목록을 보유하는 목록입니다. 예를 들어, 전체 구조의 이름을 a
으로하면 항목 01은 a[1][0]
이고, 항목 01.01은 a[1][1][0]
이고, 항목 02.01.02는 a[2][1][2][0]
입니다. 이 구조를 사용하면 나중에 더 많은 항목을 삽입 할 수 있으므로 다른 항목을 방해하지 않으면 서 항목 01.01.01을 쉽게 추가 할 수 있습니다. 구조에 항목 번호를 저장할 필요가 없습니다. 구조의 데이터 항목 위치에서 직접 추론됩니다.
이 구현을 통해 전체 구조에 빈 항목 번호가 있으며 a[0]
에 저장된 데이터 항목을 가질 수 있습니다. 누락 된 데이터 항목은 None
으로 표시 될 수 있으며 빈 항목은 ''
과 같은 다른 빈 항목이 될 수 있습니다. 여기에 예제 구조와 그것을 인쇄하는 코드를 보여주는 코드가 있습니다.
def print_structure(structure, level=''):
"""Iterate through a heirarchical data structure, printing the data
items with their level numbers"""
for i, item in enumerate(structure):
if i == 0:
# Process each data item appropriately
if item is not None:
print(level + ' : ' + str(item))
else:
new_level = format(i, '02')
if level:
new_level = level + '.' + new_level
print_structure(item, new_level)
a = [None,
['Tony, John, Meredith',
['Alex, Fred, Melissa']],
['Alley, Henry, Natalie',
[None,
['?'],
['Chris, Pete']]],
['Andrew',
['Nancy, Peter, Harold']]]
print_structure(a)
이 구현에서 각 "그룹"은 문자열입니다. 그룹이 있다고 말한 곳에 '?'
그룹을 뒀지 만 그게 무엇인지 진술하지 않았고, 데이터 아이템이 있다고 말하지 않은 None
을 넣었습니다. 구조체의 처리를 변경하려면, 주석 뒤의 두 행을 변경하십시오. Process each data item appropriately
. 위 코드의 출력물은
01 : Tony, John, Meredith
01.01 : Alex, Fred, Melissa
02 : Alley, Henry, Natalie
02.01.01 : ?
02.01.02 : Chris, Pete
03 : Andrew
03.01 : Nancy, Peter, Harold
입니다. JSON에서 저장하고 복원하는 것은 쉽습니다. 물론 이것은 구조 나 코드 중 일부를 수정할 수 있지만 사용자의 요구를 충족해야합니다.
링크 된 목록 또는 트리. 당신은 분명히 그 데이터를 위해 직접 만들 필요가 있습니다. –