获取字典中特定值的键

时间:2016-11-13 00:45:03

标签: python dictionary

我之所以提出这个问题是因为我正在使用大量数据。

在我的算法中,我基本上需要这样的东西:

users_per_document = []
documents_per_user = []

正如您从词典的名称中理解的那样,我需要用户点击特定用户点击的特定文档和文档。

在这种情况下,我有" 重复"数据,并且它们两者一起溢出内存,我的脚本在一段时间后被杀死。因为我使用非常大的数据集,所以我必须以有效的方式进行。

我认为这是不可能的,但我需要问一下,有没有办法从字典中获取特定值的所有键?

因为如果有办法,我就不再需要其中一个词典。

  

例如:

     

users_per_document["document1"]显然会返回相应的内容   用户,
   我需要的是users_per_document.getKeys("user1"),因为这基本上会与documents_per_user["user1"]

返回相同的内容

如果不可能,任何建议都很高兴。

2 个答案:

答案 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