[英]Pythonic way of searching a dict of lists?
出於各種原因,我喜歡使用“列表字典”結構來組織 Python 中的數據,但是,我發現的一個缺點是執行查找可能很煩人。
舉一個例子,數據是 NCAA 錦標賽決賽的歷史——它會是這樣的:
data = {'year': ['2019','2018',...],'winner': ['Virginia','Villanova',...], 'score':[]...etc}
現在假設我想查找 UConn 贏得的所有年份的數據,到目前為止我這樣做的方式是:
columns = ['year','winner','coach','score','runner_up']
new_dict = {i: [] for i in columns} #redefine blank dict
for i in range(0,len(old_dict['year']),1): #go through range
for j in columns: #go through columns
if old_dict['winner'][i]=='Connecticut':
new_dict[j].append(old_dict[j][i]) #append chosen data to new dict
....new_dict = {'year': ['2014','2011',...],'winner': ['Connecticut','Connecticut',...]..etc}
有什么辦法可以做得更好嗎? 感覺有點麻煩和丑陋。 我已經嘗試過列表/字典理解的東西,但我很掙扎。 由於這種情況在我做的項目中很少出現,所以我更願意使用通用的 Python 並且我不確定像 Pandas/Numpy 這樣更適合這項工作的東西是否值得。
謝謝!
您正在編寫的代碼很糟糕地重新創建了一個關系數據庫。
如果您打算僅按照一種模式訪問數據,請使用支持該訪問模式的嵌套數據結構。 對於兩種訪問模式,要么轉換您的數據結構,要么使用包裝器和邏輯維護兩個嵌套數據結構以保持它們同步。 當您達到 3 種或更多訪問模式時,請使用關系數據庫。
如果你想保持它的輕量級,只需db = sqlite3.connect("file::memory:?cache=shared")
在 memory SQLite 中創建一個數據庫,然后使用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.