如何在python中存储稀疏列表?

时间:2017-10-15 15:29:47

标签: python

现在我有一个dict对象,其中键是唯一的散列id,值是长度> 100稀疏列表。我想以纯文本形式存储它(例如,csv / tsv /不是pickle.dump)。有没有什么好方法来存储这种稀疏列表? 例如:

d = {"a": [0,0,0, ..., 1,0], "b": [0.5,0,0, ...,0.5,0], "c":...}

每个列表的长度完全相同。我在想是否值得将这种稀疏列表存储为索引值对。但我不确定是否有任何包这样做。

2 个答案:

答案 0 :(得分:0)

您应该将稀疏列表转换为非零值的字典,而不是保存0。例如,

{'a':[0,0,0,1,0,0,0,2,0,0,0,3]}

可能会成为

{'a':{3:1, 6:2, 9:3}}

您可以使用词典理解轻松地转换列表:

compressed_data = {
    hashed_id: {
        index: value for index, value in enumerate(values) if value != 0
    } for hashed_id, values in original_data.items()
}

然后你可以将该字典保存到文件中。从文件加载压缩列表后:

decompressed_data = {}
for hashed_id, values in loaded_data.items():
    decompressed_values = [0] * DATA_LENGTH
    for index, value in values.items():
        decompressed_values[index] = value
    decompressed_data[hashed_id] = decompressed_values

答案 1 :(得分:0)

{
  "query": {
    "bool": {
      "must": [
        {
          "nested": {
            "path": "variants.attributes",
            "query": {
              "terms": {
                "variants.attributes.id": [
                  14, 15
                ]
              }
            }
          }
        },
        {
          "nested": {
            "path": "variants.attributes",
            "query": {
              "terms": {
                "variants.attributes.id": [
                  4843, 4859
                ]
              }
            }
          }
        }
      ]
    }
  }
}