簡體   English   中英

從列表 python 中的字典替換鍵

[英]replacing keys from a dictionary inside a list python

我在嵌套字典中有一個列表

body = {'Ready Date': '2020-01-31T12:00:00','Shipment Line List': [{'Description': 'Test', 'Weigth': '5', 
        'Height': '4.0','Length': '2.0', 'Width': '3.0'}, {'Description': 'Test', 'Weigth': '20', 'Height': '5',
        'Length': '30', 'Width': '10']}

我想遍歷嵌套字典中的鍵並用正確的拼寫“重量”替換“重量”我嘗試了這種方法,但我沒有得到預期的 output

key = {"Weigth":"Weight"}
def find_replace(dict_body, dictionary):
    # is the item in the dict?
    for item in dict_body:
        # iterate by keys
        if item in dictionary.keys():
            # look up and replace
            dict_body = dict_body.replace(item, dictionary[item])
    # return updated dict
    return dict_body

a = find_replace(body,key)
print(a)

我認為在這種特殊情況下更好的主意是將所有內容都視為字符串,替換並返回為字典。 因為如果您有多個嵌套鍵,那么在兩行代碼中使用這種方式可能會更容易:

from ast import literal_eval
body = literal_eval(str(body).replace("Weigth","Weight"))

這輸出:

{'Ready Date': '2020-01-31T12:00:00',
 'Shipment Line List': [{'Description': 'Test',
   'Height': '4.0',
   'Length': '2.0',
   'Weight': '5',
   'Width': '3.0'},
  {'Description': 'Test',
   'Height': '5',
   'Length': '30',
   'Weight': '20',
   'Width': '10'}]}

我想遍歷嵌套字典中的鍵並將“Weigth”替換為正確的拼寫“Weight”

類似於下面的東西

body = {'Ready Date': '2020-01-31T12:00:00', 'Shipment Line List': [{'Description': 'Test', 'Weigth': '5',
                                                                     'Height': '4.0', 'Length': '2.0', 'Width': '3.0'},
                                                                    {'Description': 'Test', 'Weigth': '20',
                                                                     'Height': '5',
                                                                     'Length': '30', 'Width': '10'}]}
for entry in body['Shipment Line List']:
    entry['Weight'] = entry['Weigth']
    del entry['Weigth']
print(body)

output

{'Ready Date': '2020-01-31T12:00:00', 'Shipment Line List': [{'Description': 'Test', 'Height': '4.0', 'Length': '2.0', 'Width': '3.0', 'Weight': '5'}, {'Description': 'Test', 'Height': '5', 'Length': '30', 'Width': '10', 'Weight': '20'}]}

暫無
暫無

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

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