LoginSignup
0
0

More than 5 years have passed since last update.

No.037【Python】ディクショナリーのキーの名前変更

Posted at

python-logo-master-v3-TM-flattened.png

今回は、ディクショナリーのキーの名前を変更する方法について書いていきます。

I'll write about "key-name change of a dictionary ", in python" on this page.

■ 古い要素を削除し、新たな要素を追加する

 Delete old factors and add new factors

>>> # delの使用
>>> 
>>> d = {"key1":1, "key2":2, "key3":3}
>>> 
>>> d["key10"] = d["key1"]
>>> 
>>> del d["key1"]
>>> 
>>> print(d)
{'key2': 2, 'key3': 3, 'key10': 1}
>>> # pop()の使用
>>> # pop():要素を削除+そのキーの値取得が可能
>>> 
>>> d = {"key1":1, "key2":2, "key3":3}
>>> 
>>> print(d.pop("key1"))
1
>>> 
>>> print(d)
{'key2': 2, 'key3': 3}
>>> # del文よりもシンプルに記載が可能
>>> 
>>> d = {"key1":1, "key2":2, "key3":3}
>>> 
>>> d ["key10"] = d.pop("key1")
>>> 
>>> print(d)
{'key2': 2, 'key3': 3, 'key10': 1}
>>> # 注意:デフォルトの状態では、第一引数に存在しないキーを指定するとエラーになる
>>> 
>>> d = {"key1":1, "key2":2, "key3":3}
>>> 
>>> print(d.pop("key10"))
Traceback (most recent call last):
  File "<pyshell#36>", line 1, in <module>
    print(d.pop("key10"))
KeyError: 'key10'
>>> # 第二引数の値を指定の場合、エラーにならない
>>> 
>>> print(d.pop('key10', None))
None
>>> 
>>> print(d)
{'key1': 1, 'key2': 2, 'key3': 3}

■ キーの名前を変更する関数の定義

 Define a function when a key-name is changed

>>> # pop()により、以下の関数定義ができる
>>> 
>>> def change_dict _key(d, old_key, new_key, default_value=None):

SyntaxError: invalid syntax
>>> def change_dict_key(d, old_key, new_key, default_value=None):
     d[new_key] = d.pop(old_key, default_value)


>>> d = {"key1":1, "key2":2, "key3":3}
>>> change_dict_key(d, "key1", "key10")
>>> 
>>> print(d)
{'key2': 2, 'key3': 3, 'key10': 1}
>>> # 存在しないキーを指定すると、第三引数に指定の値が追加される
>>> 
>>> d = {"key1":1, "key2":2, "key3":3}
>>> change_dict_key(d, "key10", "key100")
>>> 
>>> print(d)
{'key1': 1, 'key2': 2, 'key3': 3, 'key100': None}
>>> 
>>> 
>>> d = {"key1":1, "key2":2, "key3":3}
>>> change_dict_key(d, "key10", "key100", 100)
>>> 
>>> print(d)
{'key1': 1, 'key2': 2, 'key3': 3, 'key100': 100}
>>> # 補足:既存のキーの値を残す場合、setdefault()を使う
>>> 
>>> def change_dict_key_setdefault(d, old_key, new_key, default_value=None):
    d.setdefault(new_key, d.pop(old_key, default_value))


>>> d = {"key1":1, "key2":2, "key3":3}
>>> change_dict_key_setdefault(d, "key1", "key2")
>>> 
>>> print(d)
{'key2': 2, 'key3': 3}
>>> # 新規のキーが既存のキーでない場合
>>> 
>>> d = {"key1":1, "key2":2, "key3":3}
>>> change_dict_key_setdefault(d, 'key1', 'key10')
>>> 
>>> print(d)
{'key2': 2, 'key3': 3, 'key10': 1}
>>> 
>>> d = {"key1":1, "key2":2, "key3":3}
>>> change_dict_key_setdefault(d, "key10", "key100")
>>> 
>>> print(d)
{'key1': 1, 'key2': 2, 'key3': 3, 'key100': None}

随時に更新していきますので、
定期的な購読をよろしくお願いします。
I'll update my article at all times.
So, please subscribe my articles from now on.

本記事について、
何か要望等ありましたら、気軽にメッセージをください!
If you have some requests, please leave some messages! by You-Tarin

また、「Qiita」へ投稿した内容は、随時ブログへ移動して行きたいと思いますので、よろしくお願いします。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0