Python: Membangun Kamus Dengan Banyak Respons (Kamus Bersarang?)

Saya mencoba mencari cara paling efisien mencari baris dalam ~23 juta baris file CSV dengan python.

File tersebut berisi daftar kode ZIP+4, dan beberapa informasi tentang masing-masing kode, terutama ID FIPS, singkatan negara bagian, dan wilayahnya.

Misalnya baris 1 adalah {02468,1405,25,017,25017,MA,MIDDLESEX} nilainya adalah {5_Dig_Zip,+4_Dig_Zip,StateFIPS,CountyFIPS,TotalFIPS,State_Abbrev,County}.

Saya ingin membuat kamus, atau struktur data lain agar dapat melakukan kueri:

data["02468"] --> dan kembalikan semua baris dengan 5 digit ZIP adalah 02468, atau data["02468"]["1405"], dan kembalikan baris itu saja.

Data saat ini berada dalam daftar besar. Sepertinya saya ingin menggunakan kamus bertingkat, tapi saya tidak yakin harus ke mana.

Terima kasih!


person Marty Sullaway    schedule 11.05.2020    source sumber
comment
23 juta catatan? Anda akan lebih baik menyimpannya dalam database dan menggunakan fungsi kueri database.   -  person Rusty Widebottom    schedule 11.05.2020


Jawaban (1)


Pythonic: buat kerangka data pandas dengan multi-indeks (tingkat pertama: zip 5 digit, tingkat kedua - ekstensi 4 digit). Tidak terlalu pythonic, tetapi mudah: buat database sqlite dan kueri dengan cara biasa.

person Igor Rivin    schedule 11.05.2020