【Python】update()で要素の更新を行う!

Pythonのupdate()を使用すると要素の追加を行うことができます。

update()とは集合の要素を更新するメソッドであり、ある集合Bの要素をある集合Aの要素に追加して集合Aを更新することができます。

しかし、update()で要素を更新できるのは辞書とsetのみになりますので注意してください。

また、set型に対してupdate()のパラメータに文字列を指定すると、1文字が1要素としてset型のオブジェクトに更新することができます。

今回はPythonのupdate()で要素の更新を行う方法について以下の内容で解説していきます。

⚫︎ update()を使用する際の注意点

⚫︎ 辞書(dict)の要素の追加を行う場合
⚫︎ setの要素の追加を行う場合

⚫︎ update()のパラメータに文字列を指定する場合
⚫︎ 共通する要素だけを残して更新する方法
⚫︎ 共通しない要素だけを残して更新する方法

update()とは

update()とは、集合の要素を更新するメソッドとなります。

例えば、「1,2,3」という要素を持つ集合Aと「4,5,6」という要素を持つ集合Bがあり、集合Bをパラメータとして集合Aにupdate()を使用すると、集合Aの要素が「1,2,3」から「「1,2,3,4,5,6」へと更新されます。

update()の書き方

update()の書き方は下記となります。

update()のパラメータ

⚫︎ オブジェクト:
更新させるオブジェクトを辞書やset型で指定する

update()にオブジェクトを指定することで、オブジェクトの要素を更新するオブジェクトの要素へ更新して返します。

update()を使用する際の注意点

update()を使用する際にあたって以下のような注意点があります。

使用できるのは辞書とsetのみ

update()を使用できるのは辞書とsetのみとなります。
イミュータブルであるタプルやfrozensetはそもそも使用できませんが、ミュータブルであるリストにも使用することができません。

もし、「辞書やsetとは?」と思った方や、辞書やsetについてもう少し詳しく知りたいと思った方はこちらをご参考ください。



出力結果

AttributeError: ‘list’ object has no attribute ‘update’

「list」オブジェクトに属性「update」がありません。という属性エラーが発生しています。

辞書で既に存在するキーを指定すると値が更新される

update()で辞書で既に存在するキーを指定すると値が更新されるようになります。



出力結果

{1: ‘要素1’, 2: ‘要素2’, 3: ‘要素3’, 4: ‘要素4’}
{1: ‘要素5’, 5: ‘要素6’, 6: ‘要素7’}

・update()使用後
{1: ‘要素5’, 2: ‘要素2’, 3: ‘要素3’, 4: ‘要素4’, 5: ‘要素6’, 6: ‘要素7’}

dict1とdict2のキーにどちらにも「1」がありますので「要素1」が「要素5」へ更新されています。

要素の更新を行うサンプルコード

update()で要素の更新を行うサンプルコードを紹介します。

辞書(dict)の要素の更新を行う場合

update()を使って辞書(dict)の要素の更新を行ってみます。



出力結果

update()で辞書の値を更新する
{1: ‘要素1’, 2: ‘要素2’, 3: ‘要素3’, 4: ‘要素4’, 5: ‘要素5’}
{6: ‘要素6’, 7: ‘要素7’, 8: ‘要素8’, 9: ‘要素9’, 10: ‘要素10’}

・update()使用後
{1: ‘要素1’, 2: ‘要素2’, 3: ‘要素3’, 4: ‘要素4’, 5: ‘要素5’, 6: ‘要素6’, 7: ‘要素7’, 8: ‘要素8’, 9: ‘要素9’, 10: ‘要素10’}

update()によってdict2の値をdict1の値に追加しています。

setの要素の更新を行う場合

update()を使ってsetの要素の更新を行ってみます。



出力結果

update()で辞書の値を更新する
{‘要素1’, ‘要素2’, ‘要素4’, ‘要素5’, ‘要素3’}
{‘要素9’, ‘要素6’, ‘要素10’, ‘要素7’, ‘要素8’}

・update()使用後
{‘要素9’, ‘要素6’, ‘要素1’, ‘要素2’, ‘要素10’, ‘要素7’, ‘要素4’, ‘要素5’, ‘要素3’, ‘要素8’}

update()によってset2の値をset1の値に更新しています。

update()のパラメータに文字列を指定する場合

update()のパラメータに文字列を指定すると、1文字が1つの要素として更新されるようになります。

辞書には使用できませんが、setに対しては使用することができます。



出力結果

update()のパラメータに文字列を指定
{‘要素3’, ‘要素4’, ‘要素2’, ‘要素1’}
あいうえおかきくけこあ

・update()使用後
{‘あ’, ‘う’, ‘お’, ‘け’, ‘き’, ‘く’, ‘こ’, ‘要素3’, ‘か’, ‘い’, ‘え’, ‘要素4’, ‘要素2’, ‘要素1’}

update()のパラメータに文字列を指定することで、1文字が1つの要素として更新されています。

しかし、setであるため重複する要素は削除し、一つの要素として追加されます。

共通する要素だけを残して更新する方法

共通する要素だけを残して更新するにはintersection_update()を使用します。



出力結果

intersection_update()の共通する要素だけを残して更新
set1 {‘要素1’, ‘要素2’, ‘要素3’, ‘要素4’, ‘要素5’}
set2 {‘要素7’, ‘要素8’, ‘要素10’, ‘要素9’, ‘要素6’}

・update()使用後
set1 {‘要素1’, ‘要素2’, ‘要素3’, ‘要素7’, ‘要素9’, ‘要素8’, ‘要素10’, ‘要素4’, ‘要素5’, ‘要素6’}
set2 {‘要素7’, ‘要素8’, ‘要素10’, ‘要素9’, ‘要素6’}

・intersection_update()使用後
set1 {‘要素7’, ‘要素8’, ‘要素10’, ‘要素9’, ‘要素6’}
set2 {‘要素7’, ‘要素8’, ‘要素10’, ‘要素9’, ‘要素6’}

intersection_update()によって「要素7〜10」の共通する要素だけを残して更新しています。

共通しない要素だけを残して更新する方法

共通しない要素だけを残して更新するにはsymmetric_difference_update()を使用します。



出力結果

symmetric_difference_update()の共通しない要素だけを残して更新
set1 {‘要素4’, ‘要素1’, ‘要素2’, ‘要素3’, ‘要素5’}
set2 {‘要素10’, ‘要素7’, ‘要素6’, ‘要素8’, ‘要素9’}

・update()使用後
set1 {‘要素10’, ‘要素7’, ‘要素4’, ‘要素1’, ‘要素2’, ‘要素3’, ‘要素6’, ‘要素8’, ‘要素9’, ‘要素5’}
set2 {‘要素10’, ‘要素7’, ‘要素6’, ‘要素8’, ‘要素9’}

・symmetric_difference_update()使用後
set1 {‘要素4’, ‘要素1’, ‘要素2’, ‘要素3’, ‘要素5’}
set2 {‘要素10’, ‘要素7’, ‘要素6’, ‘要素8’, ‘要素9’}

symmetric_difference_update()によって「要素1〜15」の共通しない要素だけを残して更新しています。

今回のポイント

update()でsetや辞書の要素を追加

Pythonでsetや辞書の要素の追加を行うにはupdate()を使用する。

⚫︎ update()のパラメータには辞書やsetのオブジェクトを指定する

⚫︎ update()を使用できるのは辞書setのみ
(リストには対応していない)

⚫︎ update()で辞書で既に存在するキーを指定すると値が更新される

⚫︎ update()のパラメータに文字列を指定すると1文字ごとに1つの要素として追加される
(使用できるにはsetのみ)

⚫︎ 共通する要素だけを残して更新するにはintersection_update()を使用する

⚫︎ 共通しない要素だけを残して更新するにはsymmetric_difference_update()を使用する

Writer
壷井

壷井

株式会社flyhawkの壷井です。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。

最新の案件情報