簡體   English   中英

字典中的 Python 條件鍵/值

[英]Python Conditional Key/Value in Dict

我有以下一段代碼:

payload = [
    {
        'car': {
            'vin': message.car_reference.vin,
            'brand': message.car_reference.model_manufacturer,
            'model': message.car_reference.model_description,
            'color': message.car_reference.color,
        },
    }
]

message.car_reference 上唯一保證不是 None 的字段是 vin。 我仍然希望其他鍵(品牌、型號、顏色)僅在它們具有值時才出現在 dict 中。

有效載荷被發送到一個外部 API,如果例如 color = None,它會給我一個錯誤。

如果鍵和值的值不是 None ,我如何才能只添加鍵和值?

直到現在我想到的是多個 if 語句,但這看起來很糟糕,我認為這不是正確的方法。

這段代碼遞歸地查看數據結構內部

def recur_remover(collection):
    if isinstance(collection, list):
        # This allows you to pass in the whole list immediately
        for item in collection:
            recur_remover(item)
    
    elif isinstance(collection, dict):
        # When you hit a dictionary, this checks if there are nested dictionaries    
        to_delete = []
        for key, val in collection.items():
            if val is None:
                to_delete.append(key)
            else:
                recur_remover(collection[key])
        for k in to_delete:
            # deletes all unwanted keys at once instead of mutating the dict each time
            del collection[k]
    else:
        return

如果我正確理解你的問題,你可以這樣做

your_car_collection = [{'car': {k: v for k, v in car['car'].items() if v}} for car in your_car_collection]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM