我之所以提出这个问题是因为我正在使用大量数据。
在我的算法中,我基本上需要这样的东西:
users_per_document = []
documents_per_user = []
正如您从词典的名称中理解的那样,我需要用户点击特定用户点击的特定文档和文档。
在这种情况下,我有" 重复"数据,并且它们两者一起溢出内存,我的脚本在一段时间后被杀死。因为我使用非常大的数据集,所以我必须以有效的方式进行。
我认为这是不可能的,但我需要问一下,有没有办法从字典中获取特定值的所有键?
因为如果有办法,我就不再需要其中一个词典。
例如:
返回相同的内容
users_per_document["document1"]
显然会返回相应的内容 用户,
我需要的是users_per_document.getKeys("user1")
,因为这基本上会与documents_per_user["user1"]
如果不可能,任何建议都很高兴。
答案 0 :(得分:1)
如果您使用的是Python 3.x,则可以执行以下操作。如果是2.x,请改用.iteritems()
。
user1_values = [key for key,value in users_per_document.items() if value == "user1"]
注意:这会迭代整个字典。字典并不是获取特定值的所有键的理想数据结构,因为如果您必须执行此操作O(n^2)
次,它将是n
。
答案 1 :(得分:0)
我不太确定python,但在一般的计算机科学中,你可以用以下方法解决问题;
基本上,你可以有三维数组,第一个索引是用户,第二个索引是文档,第三个索引是布尔值。
布尔值表示特定用户与特定文档之间是否存在关联。
PS:如果你有一个非常稀疏的矩阵,你可以提高它的效率,但它是another story