从 json 数据 (python) 中删除空值
Remove null from a json data (python)
当我使用 Rest API 从 Firebase 下载数据时,它看起来像这样。
{
"Dataset1": [
null,
{
"Key1": 1,
"Key2": 2
},
{
"Key1": 3,
"Key2": 4
}
],
"Dataset2": [
null,
{
"Key1": 1,
"Key2": 2
},
{
"Key1": 3,
"Key2": 4
}
]
}
是否可以在将数据保存到文件之前删除 null
值?由于我设计数据库的方式,我知道 null
存在,但现在重新设计数据为时已晚。我尝试了 is_not
但还没有成功。
试试这个代码:
Dataset2 = list()
for data in Dataset:
if data not null:
Dataset2.append(data)
Dataset = Dataset2
del Dataset2
您似乎在数据库中存储了具有顺序递增键的节点(即“1”、“2”、“3”)。当您这样做时,Firebase 将其解释为数组结构,并在您检索它时将其强制转换为 (zero-based) 数组。由于您没有索引 0 的节点,因此它会在那里添加一个 null
。
为防止这种数组强制转换,请使用 non-numeric 键存储节点,例如通过在每个数字前加上一个短 non-numeric 值作为前缀。比如“key1”、“key2”、“key3”。
另见:
它似乎只是每个列表中的第一个元素。如果是这样,您可以对此使用简单的字典理解:
{k: v[1:] for k, v in data.items()}
如果不是你可以使用这个理解:
{k: [e for e in v if e != None] for k, v in data.items()}
当我使用 Rest API 从 Firebase 下载数据时,它看起来像这样。
{
"Dataset1": [
null,
{
"Key1": 1,
"Key2": 2
},
{
"Key1": 3,
"Key2": 4
}
],
"Dataset2": [
null,
{
"Key1": 1,
"Key2": 2
},
{
"Key1": 3,
"Key2": 4
}
]
}
是否可以在将数据保存到文件之前删除 null
值?由于我设计数据库的方式,我知道 null
存在,但现在重新设计数据为时已晚。我尝试了 is_not
但还没有成功。
试试这个代码:
Dataset2 = list()
for data in Dataset:
if data not null:
Dataset2.append(data)
Dataset = Dataset2
del Dataset2
您似乎在数据库中存储了具有顺序递增键的节点(即“1”、“2”、“3”)。当您这样做时,Firebase 将其解释为数组结构,并在您检索它时将其强制转换为 (zero-based) 数组。由于您没有索引 0 的节点,因此它会在那里添加一个 null
。
为防止这种数组强制转换,请使用 non-numeric 键存储节点,例如通过在每个数字前加上一个短 non-numeric 值作为前缀。比如“key1”、“key2”、“key3”。
另见:
它似乎只是每个列表中的第一个元素。如果是这样,您可以对此使用简单的字典理解:
{k: v[1:] for k, v in data.items()}
如果不是你可以使用这个理解:
{k: [e for e in v if e != None] for k, v in data.items()}