2 차원 파이썬 dict에 csv 파일 또는 엑셀 시트 (행 및 열 포함)의 데이터를로드해야합니다. 예를 들어, 엑셀 시트의 데이터는 다음과 같습니다 경우 : 공유 메모리가있는 2 차원 파이썬 dict
name age gender location
1 Jim 18 male China
2 Ross 18 male China
3 Cara 19 female Japan
4 Ted 18 male China
그런 다음 출력 파이썬 딕셔너리는 다음과 같아야합니다
data = {
1: {'name': 'Jim', 'age': 18, 'gender': 'male', 'location': 'China'},
2: {'name': 'Ross', 'age': 18, 'gender': 'male', 'location': 'China'},
3: {'name': 'Cara', 'age': 19, 'gender': 'female', 'location': 'Japan'},
4: {'name': 'Ted', 'age': 18, 'gender': 'male', 'location': 'China'}
}
을 중복 정보를 정기적으로 많은의가 있음을 볼 수있다 이 2-d dict (실제 데이터의 경우 동일한 조건을 가짐), 공유 메모리를 사용하여 새로운 dict를 개발하는 아이디어를 생각해 냈습니다. 구체적으로 말하자면 위의 예에서 2 차원 dict은 여러 행에 걸쳐 {'age': 18, 'gender': 'male', 'location': 'China'}
사본 하나만 저장하기를 원합니다.이 행은 인접하지 않아도됩니다. data[1]['age']
및 data[2]['age']
을 호출하면 추출한 작은 공유 사전에서 조회를 수행해야합니다.
나는 python dict의 소스 코드를 읽었으며 python dict는 키와 값에 대한 포인터 만 저장한다는 것을 알고있다. (일반적으로 작은 int와 string 객체의 경우 다른 포인터가 같은 객체를 가리킬 수있다.) 따라서 하나의 사본 만 저장하려는 경우 포인터 사본 하나를 의미합니다.
이 사전을 디자인하는 방법에 대한 아이디어가 있으십니까? 매우 감사합니다!!!
죄송 편집, 내가 언급하는 것을 잊지. 이 2 차원 dict의 데이터는 읽기 전용입니다.
이것은 아주 나쁜 생각처럼 들린다. Jim의 위치를 변경하면 갑자기 Ross와 Ted도 변경되었습니다. –
@Kelvin 죄송합니다, 언급하는 것을 잊었습니다. 이 dict의 데이터는 읽기 전용입니다. –
이 사람들 사이에 본질적인 공유 구성 요소가 없으면 [압축 알고리즘] (https://en.wikipedia.org/wiki/)이 원하는 것처럼 들립니다. Data_compression). 원칙적으로 사전에있는 항목에 액세스하는 속도가 느려지므로 공간 대 속도의 상충 관계가됩니다. –