现在我有一个dict对象,其中键是唯一的散列id,值是长度> 100稀疏列表。我想以纯文本形式存储它(例如,csv / tsv /不是pickle.dump)。有没有什么好方法来存储这种稀疏列表? 例如:
d = {"a": [0,0,0, ..., 1,0], "b": [0.5,0,0, ...,0.5,0], "c":...}
每个列表的长度完全相同。我在想是否值得将这种稀疏列表存储为索引值对。但我不确定是否有任何包这样做。
答案 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
]
}
}
}
}
]
}
}
}