ã¯ããã«
ããã«ã¡ã¯ãååã®80代ç®åå«å ¼ASé¨DS2課ã®åã§ããçªç¶ã§ãããåãã¦ã¹ãã¼ããé£ã¹ãæã®æåãè¦ãã¦ãã¾ããï¼ä»ã¾ã§èã¨ããã°ãµã ã®ã§ããµã«ãä¸çªç¾å³ãã¨æã£ã¦ããå°å¹´æä»£ã®ç§ã¯ãã¹ãã¼ããåãã¦é£ã¹ãä¸å¦2å¹´çã®æã®æåããã¾ã ã«å¿ãããã¾ãããä¸ã®ä¸ã«ã¯ãããªã«ç´ æµãªé£ã¹ç©ããããã ãã¹ãã¼ããªã ãã«â¦
ã¨ãããã¨ã§ãã¾ã ãã¼ã¿ã®éã¾ããåãæ±ãã¨ãã«Listãã使ã£ã¦ãªã人ã«ã¯ç®ããé±ãåãã¦ã¹ãã¼ããé£ã¹ãã¨ã並ã¿ã®æåããå±ãã§ãããcollectionsã©ã¤ãã©ãªã«ã¤ãã¦èª¬æãããã¨æãã¾ããPythonã«ã¯ãã¼ã¿ã®éã¾ããå¦çããããã«ãããã©ã«ãã§ä»¥ä¸ã®åãæä¾ãã¦ãã¾ãã
- list
- dict
- set
- tuple
ãã¡ãããã¡ãã®åãã¨ã¦ãæ±ç¨çã§åªãããã®ã«ãªãã¾ãããåºæ¬çãªåã¨ãªãã®ã§ã©ããã¦ãæ±ç¨æ§ãéè¦ãã¦ãã¾ããããã§ãããç¨éãæç¢ºãªã¨ãã«ããåªãã代æ¡ã«ãªããåãcollectionã©ã¤ãã©ãªã«ç¨æããã¦ãã¾ããç¾èã¯ä¸è¦ã«å¦ãããããã§ã¯ã¿ã¦ã¿ã¾ãããï¼
ã¾ãCollectionsã®ããã¥ã¡ã³ãã¯ãã¡ã
ä½ãã¨ããããéçºè ã«ã¨ã£ã¦æã大äºãªã®ã¯ããã¥ã¡ã³ãã§ããcollectionsã®ããã¥ã¡ã³ãã¯ä»¥ä¸ã®ãã®ã«ãªãã¾ãã
collections --- ã³ã³ãããã¼ã¿å â Python 3.10.6 ããã¥ã¡ã³ã
ããã¥ã¡ã³ããèªãã¨ã以ä¸ã®ãããªæè¨ãæ¸ããã¦ãã¾ãã
ãã®ã¢ã¸ã¥ã¼ã«ã¯ãæ±ç¨ã® Python çµã¿è¾¼ã¿ã³ã³ãã dict, list, set, ããã³ tuple ã«ä»£ãããç¹æ®ãªã³ã³ãããã¼ã¿åãå®è£ ãã¦ãã¾ãã
ã³ã³ãããã¼ã¿åâ¦ï¼ã¨ã¯ã¦ãªã«ãªãæ¹ãããã£ããããã¨æãã¾ãããã³ã³ãããã¼ã¿åã¨ããã®ã¯ãã¼ã¿ã®éã¾ããåãæ±ãåãè¨ãã¾ããã¡ã¢ãªã空ãã¨ãã¦ããã®ä¸ã«ãã¼ã¿ãç©ãã§ããã®ãã³ã³ããã¨ä¼¼ã¦ãã®ã§ããã®ãããªååã«ãªã£ã¦ãã¾ãï¼ä¾ãã°ãappendã¡ã½ããã§ãªã¹ãã«ãã¼ã¿ãã©ãã©ãç©ãã§ããã¤ã¡ã¼ã¸ã§ãï¼ãã®ã³ã³ãããã¼ã¿åã®å¥åãCollectionã§ãï¼æ¬ã¢ã¸ã¥ã¼ã«ã®ååã§ãããã¾ãï¼ï¼
è¦ããã«ãCollection = ã³ã³ãããã¼ã¿åã¯ããã¼ã¿ã®éã¾ããåãæ±ãåã«ãªãã¾ãï¼çµã¿è¾¼ã¿ã§æä¾ãã¦ããlist, dictãªã©ãã³ã³ãããã¼ã¿åã«ãªãã¾ãï¼
ããã§ã¯ãæç¨ãªåãä¸åãã¤ã¿ã¦ããã¾ãããï¼
namedtupleï¼ååãã¤ãã¦ãtuple
å½åéããåè¦ç´ ã«ååãã¤ãã¦ãtupleåããnamedtupleãã§ããããã¨ã¿ã¦ã¤ã¡ã¼ã¸ãã§ããªãããããã¾ãããã以ä¸ã®ä¾ãã¿ã¦ã¿ã¾ãããã
from collections import namedtuple ã Employee = namedtuple('Employee', [ 'name', 'age', 'department', ]) ã kong = Employee('kong', 18, 'ds_2') kong.name # 'kong' kong.age # 18 kong.department # ds_2
namedtupleã使ãã¨ããã®ããã«åè¦ç´ ã«ååï¼name, age, departmentï¼ãä¸ãã¦ããã®è¦ç´ åãããã¼ã¿ã«ã¢ã¯ã»ã¹ãããã¨ãã§ãã¾ããnamedtupleã«ã¯ãããããªã¡ãªãããããã¾ããã代表çã«ã¯ä»¥ä¸ã®ï¼ã¤ã®ã¡ãªãããããã¾ãã
- ããã¨ã¿ã¦ã©ããªæ§é ãªã®ãåããæãï¼=å¯èªæ§ãããï¼
- tupleåæ§ãã¼ã¿ã®åä»£å ¥ãã§ããªãã®ã§ãå®å ¨ã«ä½¿ãã
ãã®ã¡ãªãããç¥ãããã«ãåããååã§ãã¼ã¿ã«ã¢ã¯ã»ã¹ã§ããdictåã¨æ¯è¼ãã¦ã¿ã¾ãããï¼
Employee = {
'name': '',
'age': 0,
'department': '',
}
ã
kong = Employee.copy()
kong['name'] = 'kong'
kong['age'] = 18
kong['department'] = 'ds_2'
ã
kong['office'] = 'tokyo' # éçºè
ã®æå³ããå¤ãã¦ãå¿
è¦ä»¥ä¸ã«é
ç®ãå
¥ãããã¨ãã§ãã¡ãã
kong['age'] = 90 # ãã¼ã¿ãå代å
¥ãããã¨ãã§ãã¡ãã
ã¨ããåï¼Employeeï¼ãã©ããªé ç®ãæã¤ã¹ããã®ãªã®ããæç¢ºã«å®ç¾©ããä¸åº¦ä½æãããã¼ã¿ããã¤ã®éã«ãããæ¿ãã£ã¦æ³å®ããçµæã¨ç°ãªãæåã«ãªããããªãã¨ãé²ããã®ãnamedtupleã®ã¡ãªããã§ãã
ãã ãããã¼ã¿ã«ã¢ã¯ã»ã¹ããã³ã¹ãã¯namedtupleããdictãæ©ãã§ãã大éã®ãã¼ã¿ãçæãã¦ããããã«ã¢ã¯ã»ã¹ããããããããªã±ã¼ã¹ã§ã¯ããã©ã¼ãã³ã¹ãèæ ®ãã¦é¸æããå¿ è¦ãããã¾ãã
ãã£ã¨å®ç¨çã«ä½¿ãããã®Tips
namedtupleã«ã¯è¤æ°ã®è¦ç´ ãå ¥ããããå®å ¨ã«å©ç¨ããã«ã¯åãã³ããå¿ è¦ã«ãªããã¨ãå¤ãã§ãã åãã³ãã¯ä»¥ä¸ã®å½¢ã§å®ç¾©ãããã¨ãã§ãã¾ãã
# æ¹æ³ï¼ from collections import namedtuple ã Employee = namedtuple('Employee', [ ('name', str), ('age', int), ('department', str), ]) # æ¹æ³ï¼ import typing ã class Employee(typing.NamedTuple): name: str age: int department: str
å
ã»ã©ç´¹ä»ããcollectionsã©ã¤ãã©ãªããã®å®ç¾©ã®ä»ãtypingã®NamedTupleãç¶æ¿ãã¦ä½æãããã¨ãã§ããã®ã§ããåç
§ãã ããã
åèã¾ã§ã«ã§ããããæ¹æ³ï¼ãä¼¼ããããªæ¸ãæ¹ã§ã»ã¼åæ§ã®å®è£
ãã§ããæ¹æ³ã¨ãã¦ãdataclassã使ã£ãå®è£
ãããã¾ãã
from dataclasses import dataclass ã @dataclass class Employee: name: str age: int department: str
namedtupleã¨dataclassã¯ãã£ã¦ããã¨ã¯ã»ã¼åãã§ãããPythonã®å®è£
æ¹æ³ãç°ãªãã¾ãã
namedtupleã¯ååéãtupleãå
ã«å®è£
ãã¦ãã¦ãdataclassã¯dictãå
ã«å®è£
ããã¦ãã¾ãã
ãã®ãããã¡ã¢ãªé¢ã§ã¯namedtupleã®æ¹ãã¡ãªãããããã¾ããããã¼ã¿ã¸ã®ã¢ã¯ã»ã¹ã¹ãã¼ã¨é¢ã§ã¯dataclassã®æ¹ãæå©ã ã£ãããã¾ãã
æå¾ã«
ä»åã¯tupleã®æ¡å¼µçã§ãããnamedtupleãè¦ã¦ã¿ã¾ããããããããªã¡ãªããããããã¨æãã¾ãããä¸è¨ã§ã¾ã¨ããã¨
ãã¤ãã¥ã¼ã¿ãã« & dictçãªãã®ã欲ããã
æã«ç¬¬ä¸åè£ã¨ãã¦namedtupleãèæ
®ããã ãããè¯ããã¨æãã¾ããæ¬¡åã¯OrderedDictãç´¹ä»ãããã¨æãã¾ããã¾ããããããé¡ããã¾ãï¼
åèè³æ
- collections
- namedtuple
- dataclass
ããPythonãcollectionsã©ã¤ãã©ãªãæ´»ç¨ããããã·ãªã¼ãºä¸è¦§
å å å¹ (å·çè¨äºã®ä¸è¦§)
ã¢ããªã±ã¼ã·ã§ã³ãµã¼ãã¹é¨ ãã£ããããã¡ã³ããµã¼ãã¹èª²
ååã®80代ç®åå«