89265


dict_test = { 辞書定義 }  
としたものを、ソースコード上で別の変数に代入したとき、代入の過程で経由した変数および元データ、全てがクリアされてしまうのですが、そういうものでしょうか？

下記例では、dict_monthに対してのみ、clearを行っていますが、dict_month1, dict_month2や、dict_month_EN,
dict_month_JPまでクリアされてしまっているように見えます。

[code]

    #元データ
        dict_month_EN = {
            'Jan':'January', 'Feb':'February', 'Mar':'March', 'Apr':'April',
            'May':'May', 'Jun':'June','Jun':'July', 'Aug':'August', 'Sep':'September',
            'Oct':'October', 'Nov':'November', 'Dec':'December'
        }
        
        dict_month_JP = {
            'Jan': '1月', 'Feb': '2月', 'Mar': '3月', 'Apr': '4月',
            'May': '5月', 'Jun': '6月', 'Jul': '7月', 'Aug': '8月',
            'Sep': '9月', 'Oct': '10月', 'Nov': '11月', 'Dec': '12月'
        }
        
        
        
        def test_main():
            dict_month2 = dict_month_JP
            dict_month1 = dict_month_JP
            dict_month = dict_month_JP
            print(dict_month_JP)
            print(dict_month2)
            print(dict_month1)
            print(dict_month)
        
            dict_month.clear()
            print('---------- After clear dict_month ptrn1----------')
            print(dict_month_JP)
            print(dict_month2)
            print(dict_month1)
            print(dict_month)
        
            print('---------- dict_month ptrn2----------')
            dict_month2 = dict_month_EN
            dict_month1 = dict_month2
            dict_month = dict_month1
            print(dict_month_EN)
            print(dict_month2)
            print(dict_month1)
            print(dict_month)
        
            dict_month.clear()
            print('---------- After clear dict_month ptrn2----------')
            print(dict_month_EN)
            print(dict_month2)
            print(dict_month1)
            print(dict_month)
    
    
    
    ＜＜＜＜＜　print文の結果　＞＞＞＞＞
    
    ---------- dict_month ptrn1----------
    {'Jan': '1月', 'Feb': '2月', 'Mar': '3月', 'Apr': '4月', 'May': '5月', 'Jun': '6月', 'Jul': '7月', 'Aug': '8月', 'Sep': '9月', 'Oct': '10月', 'Nov': '11月', 'Dec': '12月'}
    {'Jan': '1月', 'Feb': '2月', 'Mar': '3月', 'Apr': '4月', 'May': '5月', 'Jun': '6月', 'Jul': '7月', 'Aug': '8月', 'Sep': '9月', 'Oct': '10月', 'Nov': '11月', 'Dec': '12月'}
    {'Jan': '1月', 'Feb': '2月', 'Mar': '3月', 'Apr': '4月', 'May': '5月', 'Jun': '6月', 'Jul': '7月', 'Aug': '8月', 'Sep': '9月', 'Oct': '10月', 'Nov': '11月', 'Dec': '12月'}
    {'Jan': '1月', 'Feb': '2月', 'Mar': '3月', 'Apr': '4月', 'May': '5月', 'Jun': '6月', 'Jul': '7月', 'Aug': '8月', 'Sep': '9月', 'Oct': '10月', 'Nov': '11月', 'Dec': '12月'}
    ---------- After clear dict_month ptrn1----------
    {}
    {}
    {}
    {}
    ---------- dict_month ptrn2----------
    {'Jan': 'January', 'Feb': 'February', 'Mar': 'March', 'Apr': 'April', 'May': 'May', 'Jun': 'July', 'Aug': 'August', 'Sep': 'September', 'Oct': 'October', 'Nov': 'November', 'Dec': 'December'}
    {'Jan': 'January', 'Feb': 'February', 'Mar': 'March', 'Apr': 'April', 'May': 'May', 'Jun': 'July', 'Aug': 'August', 'Sep': 'September', 'Oct': 'October', 'Nov': 'November', 'Dec': 'December'}
    {'Jan': 'January', 'Feb': 'February', 'Mar': 'March', 'Apr': 'April', 'May': 'May', 'Jun': 'July', 'Aug': 'August', 'Sep': 'September', 'Oct': 'October', 'Nov': 'November', 'Dec': 'December'}
    {'Jan': 'January', 'Feb': 'February', 'Mar': 'March', 'Apr': 'April', 'May': 'May', 'Jun': 'July', 'Aug': 'August', 'Sep': 'September', 'Oct': 'October', 'Nov': 'November', 'Dec': 'December'}
    ---------- After clear dict_month ptrn2----------
    {}
    {}
    {}
    {}
    
[/code]

よろしくお願いします


CC BY-SA 4.0
2022-06-07T01:37:10.557
89263
2022-06-07T13:43:25.130
2022-06-07T13:43:25.130
3060
43160
question
python python3
pythonの辞書やリストの clear()について


辞書のコピーには単純な代入ではなく `copy()` メソッドを使用してください。

参考:  
[Pythonの辞書(dict)をコピーする方法と注意点まとめ](https://www.headboost.jp/python-how-to-copy-
dict/)

>
[code]

>     新しい辞書 = コピー元の辞書.copy()
>  
[/code]


CC BY-SA 4.0
2022-06-07T01:56:03.343
89265
2022-06-07T01:56:03.343
3060
89263
answer