[英]Pythonic way of setting all other values of a key to 0 except the first value
我有一個嵌套字典:
nested_dict = {
19376: {
'key1': 'SAL/2018/4207',
'premium_due_amount': 1162239.98,
},
19377: {'key1': 'SAL/2018/4207',
'premium_due_amount': 1162239.98,
},
19378: {
'key1': 'SAL/2018/4207',
'premium_due_amount': 1162239.98,
}
}
在每個字典中,我都有一個key1和一個premium_due_amount 。
由於key1已經在第一個字典中設置,我想將除第一個之外的所有其他premium_due_amount的值更改為0。
預期產出
nested_dict = {
19376: {
'key1': 'SAL/2018/4207',
'premium_due_amount': 1162239.98,
},
19377: {'key1': 'SAL/2018/4207',
'premium_due_amount': 0,
},
19378: {
'key1': 'SAL/2018/4207',
'premium_due_amount': 0,
}
}
當前解決方案
key1_list = []
for key, vals in nested_dict.items():
if vals['key1'] in key1_list:
vals.update({'premium_due_amount': 0})
key1_list.append(vals['key1'])
請建議一種更簡化和pythonic的方法來做到這一點。
IIUC,您希望將每個值設置為0,但屬於最小鍵的值除外。 這應該適用於任何python3.x,因為dict.keys()
返回一個類似 set的對象,你可以執行set操作。
for k in nested_dict.keys() - {min(nested_dict)}:
nested_dict[k]['premium_due_amount'] = 0
print (nested_dict)
{19376: {'key1': 'SAL/2018/4207', 'premium_due_amount': 1162239.98},
19377: {'key1': 'SAL/2018/4207', 'premium_due_amount': 0},
19378: {'key1': 'SAL/2018/4207', 'premium_due_amount': 0}}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.