這個問題在這里已經有了答案: 如何洗掉嵌套字典中的所有空欄位? (4 個回答) 21 小時前關閉。
假設我有兩個字典:
dict1 = {"name": "", "full_name": {"first_name": "", "last_name": ""}}
dict2 = {"name": "JD", "full_name": {"first_name": "John", "last_name": "Doe"}, "filled_key": "something", "unfilled_key": ""}
我想合并它們,以便 dict1 的鍵包含 dict2 的鍵中的所有值。但是,它不應包含來自 dict2 的空鍵。像這樣的東西應該是輸出:
merged = {"name": "JD", "full_name": {"first_name": "John", "last_name": "Doe"}, "filled_key": "something"}
我能夠將它們合并如下:
merged = {**dict1, **dict2}
但這也復制了 dict2 中的空鍵。關于如何在不復制空鍵的情況下實作這一點的任何想法?
uj5u.com熱心網友回復:
沒有空鍵之類的東西。對于 python 解釋器,一個空字串和任何其他字串一樣是一個有效值,除了它轉換為布林值的結果為true. 合并字典時為什么不保留從 dict1 呼叫它們的“空鍵”的原因是它們被 dict2 的鍵和值覆寫,因為 dict2 具有相同的鍵。如果你想加入兩個字典并省略所有值為空字串的鍵值對,你可以這樣做:
new_dict = dict()
for k, v in dict1.items():
if v != "":
new_dict[k] = v
for k, v in dict2.items():
if v != "":
new_dict[k] = v
uj5u.com熱心網友回復:
只需在合并前過濾掉空值。
merged = {**dict1, **{k: v for k, v in dict2.items() if v}}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/418403.html
標籤:
上一篇:如何將秒轉換為最大有效時間單位
