2015-09-07 71 views
1

我想用Python存儲一些數據的很多實例。每個記錄具有以下字段: 用戶名,地址,工資等...模擬關係數據庫的Python數據結構

用戶名應該是唯一的。我做了很多搜索。

目前我正在使用字典列表,但是當我插入一個新項目時,我迭代列表並檢查每個字典的用戶名,即O(n)。搜索也是O(n)。我怎麼能達到有一個用戶名索引,並使搜索時間O(logn)?

+0

一般來說,順便去'O(log n)的'是二進制搜索,這表明通過用戶名的字母順序排序列表。如果用戶名是唯一的,爲什麼不使用外部字典呢? – jonrsharpe

+1

爲什麼不使用用戶名作爲鍵的字典? – michaelrccurtis

+2

爲什麼要使用關係數據庫(如[sqlite](https://docs.python.org/2/library/sqlite3.html))來模仿關係數據庫。 – bereal

回答

2

爲什麼不使用字典的字典?

頂級字典可以通過用戶名來解決,而其他的字典可以和現在一樣。

也可以掃描字典(d.values()) - 唯一的缺點是,您不能依賴於排序。

當然,這不是數據庫行爲,但在大多數情況下足夠好,速度非常快 - 通過字典訪問是O(1)。

當然你可以使用sqlite - 但是當你只是想通過用戶名訪問和掃描條目時,你會更快(無論是在開發和運行速度)。

0

您可以選擇使用關係數據庫。該sqlite模塊允許對數據庫存儲:

import sqlite3 
conn = sqlite3.connect(':memory:') 
# ... 
conn.close()