2016-11-13 87 views
0

我問這個問題的原因是因爲我正在處理大量數據。獲取字典中特定值的鍵

在我的算法,基本上,我需要這樣的:

users_per_document = [] 
documents_per_user = [] 

正如你從詞典的名字明白,我需要點擊一個特定的用戶被點擊一個特定的文件和文檔的用戶。

在這種情況下,我有「重複」數據,並且它們一起溢出內存,我的腳本在一段時間後死亡。因爲我使用了非常大的數據集,所以我必須以高效的方式進行創建。

我認爲這是不可能的,但我需要問它,有沒有辦法從字典中獲得特定值的所有鍵?

因爲如果有辦法做到這一點,我就不再需要其中一本字典了。

例如:

users_per_document["document1"]顯然返回相應 用戶,
我需要的是users_per_document.getKeys("user1"),因爲這將基本上回歸同樣的事情documents_per_user["user1"]

如果這是不可能,任何的建議是高興..

回答

1

如果您正在使用Python 3.x中,你可以做到以下幾點。如果是2.x,則只需使用.iteritems()

user1_values = [key for key,value in users_per_document.items() if value == "user1"] 

注:這並遍歷整個字典。字典並不是真正理想的數據結構,因此如果您必須執行此操作n次,那麼它將爲O(n^2)

0

我不是很肯定的蟒蛇,但在一般的計算機科學可以解決以下方式問題;

基本上,可以具有三維陣列,第一個索引是用戶,對於文檔第二索引和第三索引將是一個布爾值。

布爾值表示是否有所述特定用戶和特定的文檔之間的關係。 PS:如果你真的有稀疏矩陣,你可以使它更有效率,但它是another story