簡體   English   中英

將第一個鍵的所有其他值設置為0的Pythonic方法除了第一個值

[英]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.

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