Мне нужно загрузить данные из файла csv или листа excel (с строками и столбцами) в двумерный python dict. Например, если данные в листе первенствовать выглядит следующим образом:двумерный python 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'}
}
Вы можете видеть, что есть много дублирующих Infos в этот 2-й dict (а для реальных данных он имеет такое же условие), поэтому я придумал идею разработки нового dict с общей памятью. Чтобы быть конкретным, в приведенном выше примере, я хочу, чтобы мой 2-d dict сохранял только одну копию {'age': 18, 'gender': 'male', 'location': 'China'}
через несколько строк (эти строки не должны быть смежными). Если мы назовем data[1]['age']
и data[2]['age']
, он должен выполнить поиск в том же извлеченном маленьком разделенном dict.
Я прочитал исходный код python dict, и я знаю, что python dict сохраняет только указатели на ключи и значения (и обычно для небольших объектов int и string, разные указатели могут указывать на один и тот же объект). Поэтому, когда я хочу сказать, что хочу сохранить только одну копию, я имею в виду одну копию указателей.
Любая идея о том, как проектировать этот dict? Огромное спасибо!!!
EDIT
К сожалению, я забыл упомянуть. Данные в этом 2-d dict будут доступны только для чтения.
Это звучит как очень плохая идея. Если вы измените местоположение Джима, внезапно изменились и Росс и Тед. –
@ Kelvin Извините, я забыл упомянуть. Данные в этом dict будут доступны только для чтения :) –
Если между этими людьми не существует встроенного совместно используемого компонента, это звучит так, как вы хотите [алгоритм сжатия] (https://en.wikipedia.org/wiki/ Сжатие данных). Обратите внимание, что в принципе это сделает доступ к элементам в словаре медленнее - компромисс между пространством и скоростью. –