亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何創建具有不同嵌套級別且所有葉鍵具有相同值的嵌套 python 字典

如何創建具有不同嵌套級別且所有葉鍵具有相同值的嵌套 python 字典

慕田峪7331174 2022-01-05 20:14:27
我正在重構意大利面條式代碼,它有這樣一段代碼:template_dict = {    "value": "",    "isIncreased": False,    "isDecreased": False}my_dict = {    "current_half_result": {        "home": template_dict,        "draw": template_dict,        "away": template_dict    },    "full_time_result": {        "home": template_dict,        "draw": template_dict,        "away": template_dict    },    "current_half_over_under": {        "$1_5": {            "over": template_dict,            "under": template_dict        },        "handicap": ""    },    "full_time_over_under": {        "$2_5": {            "over": template_dict,            "under": template_dict        },        "handicap": ""    },    "next_goal": {        "home": template_dict,        "no_goal": template_dict,        "away": template_dict    }}如您所見,my_dict 變量在所有葉鍵中具有相同的值 - template_dict。如何以一種代碼不會比當前示例慢的方式從代碼中刪除重復,并提高代碼的可讀性和清潔度。速度是一個重要因素,因為這段代碼在我的服務器中每秒執行 3-600 次。而且我不會過多地增加行數或創建附加功能等。PS我沒有寫那個代碼,所以不要評判我。由于代碼的強耦合性,我不能一下子做出大的改變。
查看完整描述

1 回答

?
繁花如伊

TA貢獻2012條經驗 獲得超12個贊

這是我自己的解決方案。


def_dict = defaultdict(lambda: {"value": "", "isIncreased": False, "isDecreased": False})

my_dict = defaultdict(lambda: def_dict)

# PyCharm raises warning for two lines below, but it works

my_dict['current_half_over_under'] = defaultdict(lambda: def_dict) 

my_dict['full_time_over_under'] = defaultdict(lambda: def_dict)

并設置"handicap"鍵"full_time_over_under"和"current_half_over_under"字典我們應該通過訪問它my_dict.setdefault('handicap', some_value)


查看完整回答
反對 回復 2022-01-05
  • 1 回答
  • 0 關注
  • 164 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號