[英]remove {} from OrderedDict
我使用下面給出的 taskIdSerializer 創建數據的方法:
def to_representation(self, instance):
result = super(taskIdSerializer, self).to_representation(instance)
result = OrderedDict([(key, result[key]) for key in result if result['date']])
return result
這個結果在我下面給出的函數中返回:
[
{
"description": "asdsa",
"priority_id": 3,
"name": "tetst",
"date": [
{
"dates": "20/09/2021 15:14:00",
"id": 146
},
{
"dates": "20/09/2021 15:14:00",
"id": 145
}
]
},
{}, // this is value add dict when date = []
{} // this is value add dict when date = []
]
我想刪除 {} 對象,我想得到這樣的返回數據:
[
{
"description": "asdsa",
"priority_id": 3,
"name": "tetst",
"date": [
{
"dates": "20/09/2021 15:14:00",
"id": 146
},
{
"dates": "20/09/2021 15:14:00",
"id": 145
}
]
}
]
對我來說,你所擁有的看起來不像 OrderedDict。 OD 通常表示為元組對列表。 您正在顯示字典列表。
如果你的列表總是有兩個元素長,那么你可以說
result.pop()
它從列表中刪除最后一個元素。
你可以說得更緊一點:
if result[-1] == {}:
result.pop()
但是,總的來說,我認為您需要返回並更深入地了解您正在生成的輸出。
更新:
我必須承認,我仍然沒有看到您獲得的數據是如何來自 OrderedDict,至少不是來自 collections.OrderedDict。 但是,無論如何,您有一個字典列表,並且您想擺脫空字典。 所以,事情很簡單:
result # from before
pared_result = [d for d in result if d != {}]
或者有些人可能會說以下內容更“Pythonic”:
pared_result = [d for d in result if not d]
如果列表result
的元素總是字典,那么上面的兩個是等價的。 但是,如果元素可以不是字典,則上述兩者將有所不同。
上述修改后的答案都使用了一種稱為列表理解的強大形式。 這是添加到您的實用腰帶的絕佳工具。 :)
使用pop()函數刪除。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.