>è¶ç¨£å¯¹ä»è¯´ï¼âä½ è¦å°½å¿ãå°½æ§ãå°½æï¼ç±ä¸»ä½ çç¥ãè¿æ¯è¯«å½ä¸ç第ä¸ï¼ä¸æ¯æå¤§çãå
¶æ¬¡ä¹ç¸ä»¿ï¼å°±æ¯è¦ç±äººå¦å·±ãè¿ä¸¤æ¡è¯«å½æ¯å¾æ³åå
ç¥ä¸åéççæ»çº²ãâ(MATTHEW 22:37-39)
#åå
¸(2)
##åå
¸æ¹æ³
è·åé¢æè®²è¿°çå
¶å®å¯¹è±¡ç±»ä¼¼ï¼åå
¸ä¹æä¸äºæ¹æ³ãéè¿è¿äºæ¹æ³ï¼è½å¤å®ç°å¯¹åå
¸çæä½ã
è¿åå¯ä¸æ¯å± é¾ä¹æäºï¼è¿äºæ¹æ³å¨ç¼ç¨å®è·µä¸ç»å¸¸ä¼ç¨å°ã
###copy
æ·è´ï¼è¿ä¸ªæ±è¯æ¯copyçé³è¯ï¼æ åçæ±è¯ç¿»è¯æ¯âå¤å¶âã
æè¿è®°å¾å½åå¨å¦DOSçæ¶åï¼é£ä¸ªèå¸è¯´âæ·è´âï¼æå¾ææå¤´è½¬åï¼ä»æ²¡æè¯´è±æçâcopyâåé³ï¼èæ¯ç¨æ åæ±è¯è¯´âkao(ä¸å£°)bei(å声)âï¼å¯¹äºä¸ç´å¦ä¹ è¿è±è¯ãæ åæ±è¯åæå®¶ä¹¡æ¹è¨ç人æ¥è¯´ï¼çè§£âæ·è´âæ¯æç¹å°é¾çãè°ç¥éå¨ç¼ç¨çç¨çæ¯é³è¯å¢ã
å¨ä¸è¬ççè§£ä¸ï¼copyå°±æ¯å°åæ¥çä¸è¥¿åæä¸ä»½ã使¯ï¼å¨Pythonéé¢ï¼ä¹è³äºå¾å¤ç¼ç¨è¯è¨ä¸ï¼ï¼copyå¯ä¸æ¯é£ä¹ç®åçã
>>> a = 5
>>> b = a
>>> b
5
è¿æ ·åï¼æ¯ä¸æ¯å°±å¾å°äºä¸¤ä¸ª5äºå¢ï¼è¡¨é¢ä¸ç似乿¯ï¼ä½æ¯ï¼ä¸è¦å¿è®°æå¨åé¢å夿å°çï¼**对象æç±»åï¼åéæ ç±»å**ï¼æ£æ¯å çè¿å¥è¯ï¼åéå
¶å®æ¯ä¸ä¸ªæ ç¾ãä¸å¦¨è¯·åºæ³å®ï¼`id()`ï¼ä¸é¨æ¥ç对象å¨å
åä¸çä½ç½®ã
>>> id(a)
139774080
>>> id(b)
139774080
æç¶ï¼å¹¶æ²¡æä¸¤ä¸ª5ï¼å°±ä¸ä¸ªï¼åªä¸è¿æ¯è´´äºä¸¤å¼ æ ç¾èå·²ã
è¿ç§ç°è±¡æ®éåå¨äºPythonä¸ãå
¶å®ç就䏿¼ç¤ºäºï¼å°±ä»
ççåå
¸ç±»åã
>>> ad = {"name":"qiwsir", "lang":"python"}
>>> bd = ad
>>> bd
{'lang': 'python', 'name': 'qiwsir'}
>>> id(ad)
3072239652L
>>> id(bd)
3072239652L
æ¯çï¼éªè¯äºãçç¡®æ¯ä¸ä¸ªå¯¹è±¡è´´äºä¸¤ä¸ªæ ç¾ã
è¿æ¯ç¨èµå¼çæ¹å¼ï¼å®ç°çæè°âåè£
æ·è´âã
妿ç¨`copy()`æ¹æ³å¢ï¼
>>> cd = ad.copy()
>>> cd
{'lang': 'python', 'name': 'qiwsir'}
>>> id(cd)
3072239788L
æç¶ä¸åï¼è¿æ¬¡å¾å°çcdæ¯è·åæ¥çadä¸åçï¼å®å¨å
åä¸å¦è¾äºä¸ä¸ªç©ºé´ã
ç°å¨æä¸¤ä¸ªåå
¸å¯¹è±¡ï¼è½ç¶å®ä»¬æ¯ä¸æ ·çï¼ä½å¨ä¸¤ä¸ªâçªâéé¢ï¼å½¼æ¤äºä¸ç¸å¹²ã妿æå°è¯ä¿®æ¹cdï¼å°±åºè¯¥å¯¹åæ¥çadä¸ä¼é æä»»ä½å½±åã
>>> cd["name"] = "itdiffer.com"
>>> cd
{'lang': 'python', 'name': 'itdiffer.com'}
>>> ad
{'lang': 'python', 'name': 'qiwsir'}
ççæ¯é£æ ·ï¼è·æ¨ç䏿¨¡ä¸æ ·ãæä»¥ï¼è¦çè§£äºâåéâæ¯å¯¹è±¡çæ ç¾ï¼å¯¹è±¡æç±»åèåéæ ç±»åï¼å°±è½æ£ç¡®æ¨æåºPythonè½å¤æä¾çç»æã
>>> bd
{'lang': 'python', 'name': 'qiwsir'}
>>> bd["name"] = "laoqi"
>>> ad
{'lang': 'python', 'name': 'laoqi'}
>>> bd
{'lang': 'python', 'name': 'laoqi'}
è¿æ¯åä¿®æ¹äºbdæå¯¹åºçâ对象âï¼ç»æåç°adçâ对象âä¹åäºã
ç¶èï¼äºæ
没æé£ä¹ç®åï¼çä¸é¢çï¼è¦ä»ç»ç¹ï¼å¦å就迷è«äºã
>>> x = {"name":"qiwsir", "lang":["python", "java", "c"]}
>>> y = x.copy()
>>> y
{'lang': ['python', 'java', 'c'], 'name': 'qiwsir'}
>>> id(x)
3072241012L
>>> id(y)
3072241284L
yæ¯ä»xæ·è´è¿æ¥çï¼ä¸¤ä¸ªå¨å
å䏿¯ä¸åç对象ã
>>> y["lang"].remove("c")
为äºä¾¿äºçè§£ï¼å°½é使ç¨çå¥åï¼é¿å
ç¨å¾é¿å¾é¿çå¤åå¥ã
å¨yæå¯¹åºçåå
¸å¯¹è±¡ä¸ï¼é®"lang"ç弿¯ä¸ä¸ªå表ï¼ä¸º['python', 'java', 'c']ï¼è¿éç¨`remove()`è¿ä¸ªåè¡¨æ¹æ³å é¤å
¶ä¸çä¸ä¸ªå
ç´ `"c"`ãå é¤ä¹åï¼è¿ä¸ªå表å为ï¼`['python', 'java']`ã
>>> y
{'lang': ['python', 'java'], 'name': 'qiwsir'}
æç¶ä¸åºææã
é£ä¹ï¼é£ä¸ªxæå¯¹åºçåå
¸ä¸ï¼è¿ä¸ªå表ååäºåï¼
åºè¯¥æ²¡æååãå 为æç
§åé¢æè®²çï¼å®æ¯å¦å¤ä¸ä¸ªå¯¹è±¡ï¼ä¸¤ä¸ªäºä¸å¹²æ°ã
>>> x
{'lang': ['python', 'java'], 'name': 'qiwsir'}
æ¯ä¸æ¯æç¹åºä¹ææå¢ï¼
ææ²¡æä½å¼å¦ãä½ å¦æä¸ä¿¡ï¼å°±æç
§æä½èªå·±å¨äº¤äºæ¨¡å¼ä¸è¯è¯ï¼æ¯ä¸æ¯è½å¤å¾å°è¿ä¸ªç»æå¢ï¼è¿æ¯ä¸ºä»ä¹ï¼
使¯ï¼å¦æè¦æä½å¦å¤ä¸ä¸ªé®å¼å¯¹ï¼
>>> y["name"] = "laoqi"
>>> y
{'lang': ['python', 'java'], 'name': 'laoqi'}
>>> x
{'lang': ['python', 'java'], 'name': 'qiwsir'}
åé¢æè¯´çåçæ¯ææçï¼ä¸ºä»ä¹å°å¼æ¯åè¡¨çæ¶åå°±ä¸å¥æäºå¢ï¼
è¦ç ´è§£è¿ä¸ªè¿·å±è¿å¾ç¨`id()`
>>> id(x)
3072241012L
>>> id(y)
3072241284L
xï¼y对åºç两个ä¸å对象ï¼çç¡®å¦æ¤ãä½è¿ä¸ªå¯¹è±¡ï¼åå
¸ï¼æ¯ç±ä¸¤ä¸ªé®å¼å¯¹ç»æçãå
¶ä¸ä¸ä¸ªé®ç弿¯å表ã
>>> id(x["lang"])
3072243276L
>>> id(y["lang"])
3072243276L
åç°äºè¿æ ·ä¸ä¸ªäºå®ï¼å表æ¯åä¸ä¸ªå¯¹è±¡ã
使¯ï¼ä½ä¸ºå符串为å¼å¾é£ä¸ªé®å¼å¯¹ï¼æ¯åå±ä¸å对象ã
>>> id(x["name"])
3072245184L
>>> id(y["name"])
3072245408L
è¿ä¸ªäºå®ï¼å°±è¯´æäºä¸ºä»ä¹ä¿®æ¹ä¸ä¸ªå表ï¼å¦å¤ä¸ä¸ªä¹è·çä¿®æ¹ï¼èä¿®æ¹ä¸ä¸ªçå符串ï¼å¦å¤ä¸ä¸ªä¸è·éçåå äºã
使¯ï¼ä¼¼ä¹è¿æ²¡æè§£å¼æ·±å±çåå ã
æ·±å±çåå ï¼è¿è·Pythonåå¨çæ°æ®ç±»åç¹ç¹æå
³ï¼Pythonåªåå¨åºæ¬ç±»åçæ°æ®ï¼æ¯å¦intãstrï¼å¯¹äºä¸æ¯åºç¡ç±»åçï¼æ¯å¦åæåå
¸ç弿¯å表ï¼Pythonä¸ä¼å¨è¢«å¤å¶çé£ä¸ªå¯¹è±¡ä¸éæ°åå¨ï¼èæ¯ç¨å¼ç¨çæ¹å¼ï¼æå忥çå¼ã
å¦æè¯»è
没ææç½è¿å¥è¯çææï¼æå°±åªè½è¯´ç¹éä¿çäºï¼ææ¬æ¥ä¸æ³è¯´éä¿çï¼è£
çèªå·±æå¦é®ï¼ãPython卿æ§è¡çå¤å¶å¨ä½ä¸ï¼å¦ææ¯åºæ¬ç±»åç对象ï¼ä¸ææ°ååå符串ï¼ï¼å°±å¨å
åä¸éæ°å»ºä¸ªçªï¼å¦æä¸æ¯åºæ¬ç±»åçï¼å°±ä¸æ°å»ºçªäºï¼èæ¯ç¨æ ç¾å¼ç¨åæ¥ççªãè¿ä¹å¥½çè§£ï¼å¦ææ¯è¾ç®åï¼éä¾¿å»ºç«æ°çªç®åï¼ä½æ¯ï¼å¦æå¯¹è±¡å¤ªå¤æäºï¼å°±å«è´¹å²äºï¼è¿æ¯å¼ç¨ä¸ä¸åæ¥ççäºãï¼è¿ä¹è®²æç¹å¿½æ äºï¼ã
æä»¥ï¼å¨ç¼ç¨è¯è¨ä¸ï¼æå®ç°ä¸é¢é£ç§æ·è´çæ¹å¼ç§°ä¹ä¸ºâæµ
æ·è´âã顾åæä¹ï¼æ²¡æè§£å³æ·±å±æ¬¡é®é¢ãè¨å¤ä¹æï¼è¿æè½å¤è§£å³æ·±å±æ¬¡é®é¢çæ¹æ³å½ã
çç¡®æ¯ï¼å¨Pythonä¸ï¼æä¸ä¸ªâæ·±æ·è´â(deep copy)ãä¸è¿ï¼è¦ç¨ä¸ä¸`import`æ¥å¯¼å
¥ä¸ä¸ªæ¨¡åãè¿ä¸ªä¸è¥¿åé¢ä¼è®²è¿°ï¼åé¢ä¹éå°è¿äºã
>>> import copy
>>> z = copy.deepcopy(x)
>>> z
{'lang': ['python', 'java'], 'name': 'qiwsir'}
ç¨`copy.deepcopy()`æ·±æ·è´äºä¸ä¸ªæ°ç坿¬ï¼çè¿ä¸ªå½æ°çååå°±ç¥éæ¯æ·±æ·è´(deepcopy)ãç¨ä¸é¢ç¨è¿çæ¦å¨`id()`æ¥åå¯ä¸çªï¼
>>> id(x["lang"])
3072243276L
>>> id(z["lang"])
3072245068L
æç¶æ¯å¦å¤ä¸ä¸ªâçªâï¼ä¸æ¯å¼ç¨äºã妿æç
§è¿ä¸ªç»æï¼ä¿®æ¹å
¶ä¸ä¸ä¸ªå表ä¸çå
ç´ ï¼åºè¯¥ä¸å½±åå¦å¤ä¸ä¸ªäºã
>>> x
{'lang': ['python', 'java'], 'name': 'qiwsir'}
>>> x["lang"].remove("java")
>>> x
{'lang': ['python'], 'name': 'qiwsir'}
>>> z
{'lang': ['python', 'java'], 'name': 'qiwsir'}
æç¶å¦æ¤ãåè¯è¯ï¼æè¿ç¾åã
>>> x["lang"].append("c++")
>>> x
{'lang': ['python', 'c++'], 'name': 'qiwsir'}
è¿å°±æ¯æè°æµ
æ·è´åæ·±æ·è´ã
###clear
å¨äº¤äºæ¨¡å¼ä¸ï¼ç¨`help()`æ¯ä¸ä¸ªå¾å¥½çä¹ æ¯
>>> help(dict.clear)
clear(...)
D.clear() -> None. Remove all items from D.
è¿æ¯ä¸ä¸ªæ¸
空åå
¸ä¸ææå
ç´ çæä½ã
>>> a = {"name":"qiwsir"}
>>> a.clear()
>>> a
{}
è¿å°±æ¯`clear()`çå«ä¹ï¼å°åå
¸æ¸
空ï¼å¾å°çæ¯â空âåå
¸ãè¿ä¸ªä¸è说ç`del()`æçå¾å¤§çåºå«ã`del()`æ¯å°åå
¸å é¤ï¼å
åä¸å°±æ²¡æå®äºï¼ä¸æ¯ä¸ºâ空âã
>>> del a
>>> a
Traceback (most recent call last):
File "", line 1, in
NameError: name 'a' is not defined
æç¶å é¤äºã
`clear()`åçåå
¸ï¼æ¯å°å
¶å
容æ¸
空ï¼è¿è½å¤ä½¿ç¨`a = {}`è¿ç§æ¹æ³ã
æåæéï¼`clear()`没æè¿åå¼ã
###get,setdefault
getçå«ä¹æ¯ï¼
get(...)
D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None.
注æè¿ä¸ªè¯´æä¸ï¼âif k in Dâï¼å°±è¿åå
¶å¼ï¼å¦å...(çä¼å说)ã
>>> d
{'lang': 'python'}
>>> d.get("lang")
'python'
`dict.get()`å°±æ¯è¦å¾å°åå
¸ä¸æä¸ªé®çå¼ï¼ä¸è¿ï¼å®ä¸æ¯é£ä¹â严åâç½¢äºãå 为类似è·å¾åå
¸ä¸é®çå¼å¾æ¹æ³ï¼ä¸èå·²ç»æè¿ï¼å¦`d['lang']`å°±è½å¾å°å¯¹åºçå¼`"python"`ï¼å¯æ¯ï¼å¦æè¦è·åçé®ä¸åå¨ï¼å¦ï¼
>>> print d.get("name")
None
>>> d["name"]
Traceback (most recent call last):
File "", line 1, in
KeyError: 'name'
è¿å°±æ¯`dict.get()`å`dict['key']`çåºå«ã
å颿ä¸ä¸ªåå¥è¯ï¼å¦æé®ä¸å¨åå
¸ä¸ï¼ä¼è¿åNoneï¼è¿æ¯ä¸ç§æ
åµãè¿å¯ä»¥è¿æ ·ï¼
>>> d = {"lang":"python"}
>>> newd = d.get("name",'qiwsir')
>>> newd
'qiwsir'
>>> d
{'lang': 'python'}
以`d.get("name",'qiwsir')`çæ¹å¼ï¼å¦æä¸è½å¾å°é®`"name"`çå¼ï¼å°±è¿åå颿å®çå¼`"qiwsir"`ãè¿å°±æ¯ææ¡£ä¸é£å¥è¯ï¼`D[k] if k in D, else d.`çå«ä¹ãè¿æ ·åï¼å¹¶æ²¡æå½±å忥çåå
¸ã
å¦å¤ä¸ä¸ªè·getå¨åè½ä¸æç¸ä¼¼å°æ¹ç`D.setdefault(k)`ï¼å
¶å«ä¹æ¯ï¼
setdefault(...)
D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D
é¦å
ï¼å®è¦æ§è¡`D.get(k,d)`,å°±è·åé¢ä¸æ ·äºï¼ç¶åï¼è¿ä¸æ¥æ§è¡å¦å¤ä¸ä¸ªæä½ï¼å¦æé®kä¸å¨åå
¸ä¸ï¼å°±å¨åå
¸ä¸å¢å è¿ä¸ªé®å¼å¯¹ãå½ç¶ï¼å¦ææå°±æ²¡æå¿
è¦æ§è¡è¿ä¸æ¥äºã
>>> d
{'lang': 'python'}
>>> d.setdefault("lang")
'python'
å¨åå
¸ä¸ï¼æ`"lang"`è¿ä¸ªé®ï¼é£ä¹å°±è¿åå®çå¼ã
>>> d.setdefault("name","qiwsir")
'qiwsir'
>>> d
{'lang': 'python', 'name': 'qiwsir'}
没æ`"name"`è¿ä¸ªé®ï¼äºæ¯è¿å`d.setdefault("name","qiwsir")`æå®çå¼"qiwsir"ï¼å¹¶ä¸å°é®å¼å¯¹`'name':"qiwsir"`æ·»å å°åæ¥çåå
¸ä¸ã
å¦æè¿æ ·æä½ï¼
>>> d.setdefault("web")
ä»ä¹ä¹æ²¡æè¿ååï¼ä¸æ¯ï¼è¿åäºï¼åªä¸è¿æ²¡ææ¾ç¤ºåºæ¥ï¼å¦æä½ ç¨printå°±è½çå°äºãå 为è¿éè¿åçæ¯ä¸ä¸ªNone.ä¸å¦¨æ¥çä¸ä¸é£ä¸ªåå
¸ã
>>> d
{'lang': 'python', 'web': None, 'name': 'qiwsir'}
æ¯ä¸æ¯é®`"web"`çå¼æä¸ºäº`None`ã
###items/iteritems, keys/iterkeys, values/itervalues
è¿ä¸ªæ é¢ä¸ååºçæ¯ä¸ç»åå
¸ç彿°ï¼å¹¶ä¸è¿ä¸ç»æç¸ä¼¼çå°æ¹ã
注æï¼å¨Python 3 ä¸ï¼å 为已ç»åäºä¼åï¼æä»¥ä¸éè¦æ`iteritems`ï¼`iterkeys`å`itervalues`ä¸ä¸ªæ¹æ³ã
å¨è¿é详ç»è®²è¿°ç¬¬ä¸ç»ï¼å
¶ä½ä¸¤ç»ï¼ææ³åå读è
çèªææºæ
§æ¯ä¸å¨è¯ä¸çã
Python 2ä¸ï¼
>>> help(dict.items)
items(...)
D.items() -> list of D's (key, value) pairs, as 2-tuples
Python 3ä¸ï¼
>>> help(dict.items)
Help on method_descriptor:
items(...)
D.items() -> a set-like object providing a view on D's items
è¿ç§æ¹æ³æ¯æ¯ç¨çä¼ä¿©äºï¼åªè¦å¨äº¤äºæ¨¡å¼ä¸é¼æ£ä¸ä¸ï¼å°±è½å¾å°å¸®å©ä¿¡æ¯ã
Python 2ä¸ï¼`D.items()`è½å¤å¾å°ä¸ä¸ªå
³äºåå
¸çå表ï¼å表ä¸çå
ç´ æ¯ç±åå
¸ä¸çé®åå¼ç»æçå
ç»ãä¾å¦ï¼
>>> dd = {"name":"qiwsir", "lang":"python", "web":"www.itdiffer.com"}
>>> dd_kv = dd.items()
>>> dd_kv
[('lang', 'python'), ('web', 'www.itdiffer.com'), ('name', 'qiwsir')]
æ¾ç¶ï¼æ¯æè¿åå¼çãè¿ä¸ªæä½ï¼å¨åé¢è¦è®²å°ç循ç¯ä¸ï¼å°æå¾å¤§çä½ç¨ã
è·`items`类似çå°±æ¯`iteritems`ï¼çè¿ä¸ªè¯çç¹ç¹ï¼æ¯ç±iteråitemsæ¼æ¥èæçï¼åé¨åitemså°±ä¸ç¨è¯´äºï¼è¯å®æ¯å¨åè¯æä»¬ï¼å¾å°çç»æè·`D.items()`çç»æç±»ä¼¼ãæ¯çï¼ä½æ¯ï¼è¿æä¸ä¸ªiteræ¯ä»ä¹ææï¼å¨[ãå表(2)](./112.md)ä¸ï¼ææå°äºä¸ä¸ªè¯âiterableâï¼å®çå«ä¹æ¯âå¯è¿ä»£çâï¼è¿éçiteræ¯æçåè¯iteratorçåé¨åï¼æææ¯âè¿ä»£å¨âãåèµ·æ¥ï¼"iteritems"çå«ä¹å°±æ¯ï¼
iteritems(...)
D.iteritems() -> an iterator over the (key, value) items of D
ä½ çï¼å¦ä¹ python䏿¯ä»ä¹é¾äºï¼åªè¦å
å使ç¨å¸®å©ææ¡£å°±å¥½äºãè¿éåè¯æä»¬ï¼å¾å°çæ¯ä¸ä¸ªâè¿ä»£å¨âï¼å
³äºä»ä¹æ¯è¿ä»£å¨ï¼ä»¥åç¸å
³çå
容ï¼åç»ä¼è¯¦ç»è®²è¿°ï¼ï¼è¿ä¸ªè¿ä»£å¨æ¯å
³äºâD.items()âçãç个ä¾åå°±æç½äºã
èPython 3ä¸ï¼`D.items()`è¿åçå°±æ¯ä¸ä¸ªå¯è¿ä»£ç对象ï¼å°±æ é`D.iteritems()`äºã
å¨Python 2䏿ä½ã
>>> dd = {'lang': 'python', 'web': 'www.itdiffer.com', 'name': 'qiwsir'}
>>> dd_iter = dd.iteritems()
>>> type(dd_iter)
>>> dd_iter
>>> list(dd_iter)
[('lang', 'python'), ('web', 'www.itdiffer.com'), ('name', 'qiwsir')]
å¾å°çdd_iterçç±»åï¼æ¯ä¸ä¸ª'dictionary-itemiterator'ç±»åï¼ä¸è¿è¿ç§è¿ä»£å¨ç±»åçæ°æ®ä¸è½ç´æ¥è¾åºï¼å¿
é¡»ç¨`list()`转æ¢ä¸ä¸ï¼æè½çå°éé¢ççé¢ç®ã
å¦å¤ä¸¤ç»ï¼å«ä¹è·è¿ä¸ªç¸ä¼¼ï¼åªä¸è¿æ¯å¾å°keyæè
valueãä¸é¢ä»
å举ä¸ä¸ä¾åï¼å
·ä½å
容ï¼è¯»è
å¯ä»¥èªè¡å¨äº¤äºæ¨¡å¼ä¸çææ¡£ã
>>> dd
{'lang': 'python', 'web': 'www.itdiffer.com', 'name': 'qiwsir'}
>>> dd.keys()
['lang', 'web', 'name']
>>> dd.values()
['python', 'www.itdiffer.com', 'qiwsir']
è¿éå
交代ä¸å¥ï¼å¦æè¦å®ç°å¯¹é®å¼å¯¹æè
鮿è
å¼ç循ç¯ï¼ç¨è¿ä»£å¨çæçä¼é«ä¸äºã对è¿å¥è¯ççè§£ï¼å¨åé¢ä¼ç»å¤§å®¶è¿è¡è¯¦ç»åæã
å¨python3ä¸, åªæitems, keysåvaluesæ¹æ³, è¿åçä¹ä¸æ¯list, èæ¯[view对象](https://docs.python.org/3/library/stdtypes.html#dict-views)
###pop, popitem
å¨[ãå表(3)ã](./113.md)ä¸ï¼æå
³äºå é¤å表ä¸å
ç´ ç彿°`pop`å`remove`ï¼è¿ä¸¤ä¸ªçåºå«å¨äº`list.remove(x)`ç¨æ¥å 餿å®çå
ç´ ï¼è`list.pop([i])`ç¨äºå 餿å®ç´¢å¼çå
ç´ ï¼å¦æä¸æä¾ç´¢å¼å¼ï¼å°±é»è®¤å 餿åä¸ä¸ªã
å¨åå
¸ä¸ï¼ä¹æå é¤é®å¼å¯¹ç彿°ã
pop(...)
D.pop(k[,d]) -> v, remove specified key and return the corresponding value.
If key is not found, d is returned if given, otherwise KeyError is raised
`D.pop(k[,d])`æ¯ä»¥åå
¸çé®ä¸ºåæ°ï¼å 餿å®é®çé®å¼å¯¹ã
>>> dd
{'lang': 'python', 'web': 'www.itdiffer.com', 'name': 'qiwsir'}
>>> dd.pop("name")
'qiwsir'
è¦å 餿å®é®"name"ï¼è¿åäºå
¶å¼"qiwsir"ãè¿æ ·ï¼å¨ååå
¸ä¸ï¼â'name':'qiwsir'âè¿ä¸ªé®å¼å¯¹å°±è¢«å é¤äºã
>>> dd
{'lang': 'python', 'web': 'www.itdiffer.com'}
å¼å¾æ³¨æçæ¯ï¼pop彿°ä¸çåæ°æ¯ä¸è½çç¥çï¼è¿è·å表ä¸çé£ä¸ªpopææä¸åã
>>> dd.pop()
Traceback (most recent call last):
File "", line 1, in
TypeError: pop expected at least 1 arguments, got 0
妿è¦å é¤åå
¸ä¸æ²¡æçé®å¼å¯¹ï¼ä¹ä¼æ¥éã
>>> dd.pop("name")
Traceback (most recent call last):
File "", line 1, in
KeyError: 'name'
`pop()`çåæ°ï¼å¯ä»¥æ¯ä¸¤ä¸ªï¼ä¸é¢çä¾åä¸åªåäºä¸ä¸ªã妿å两个ï¼é£ä¹å°±å
æ£æ¥kæ¯ä¸æ¯åå¨äºåå
¸ä¸çé®ï¼å¦ææ¯ï¼å°±è¿å宿坹åºçå¼ï¼å¦æä¸æ¯ï¼å°±è¿ååæ°ä¸ç第äºä¸ªï¼å½ç¶ï¼å¦æä¸å第äºä¸ªåæ°ï¼å°±ä¼å¦åä¸é¢ä¸¾ä¾ä¸æ ·æ¥éã
æææçæ¯`D.popitem()`忝è·`list.pop()`æç¸ä¼¼ä¹å¤ï¼ä¸ç¨ååæ°ï¼list.popæ¯å¯ä»¥ä¸ååæ°ï¼ï¼ä½æ¯ï¼`D.popitem()`䏿¯å 餿åä¸ä¸ªï¼åé¢å·²ç»äº¤ä»£è¿äºï¼dict没æé¡ºåºï¼ä¹å°±æ²¡ææååæå
äºï¼å®æ¯éæºå é¤ä¸ä¸ªï¼å¹¶å°æå é¤çè¿åã
popitem(...)
D.popitem() -> (k, v), remove and return some (key, value) pair as a
2-tuple; but raise KeyError if D is empty.
妿åå
¸æ¯ç©ºçï¼å°±è¦æ¥éäº
>>> dd = {'lang': 'python', 'web': 'www.itdiffer.com'}
>>> dd.popitem()
('lang', 'python')
>>> dd
{'web': 'www.itdiffer.com'}
æåå°å é¤äºä¸å¯¹ï¼æ³¨ææ¯éæºçï¼ä¸æ¯å é¤å颿¾ç¤ºçæåä¸ä¸ªãå¹¶ä¸è¿åäºå é¤çå
容ï¼è¿åçæ°æ®æ ¼å¼æ¯å
ç»ã
>>> dd.popitems()
Traceback (most recent call last):
File "", line 1, in
AttributeError: 'dict' object has no attribute 'popitems'
éäºï¼ï¼
注æçæç¤ºä¿¡æ¯ï¼æ²¡æé£ä¸ª...ï¼å¦ï¼æç¶éäºãæ³¨ææ¯popitemï¼ä¸è¦å¤äºsï¼åé¢ç`D.items()`ä¸å
å«sï¼æ¯å¤æ°å½¢å¼ï¼è¯´æå®è½å¤è¿åå¤ä¸ªç»æï¼å¤ä¸ªå
ç»ç»æçå表ï¼ï¼èå¨`D.popitem()`ä¸ï¼ä¸æ¬¡åªè½éæºå é¤ä¸å¯¹é®å¼å¯¹ï¼å¹¶ä»¥ä¸ä¸ªå
ç»çå½¢å¼è¿åï¼æä»¥ï¼è¦åæ°å½¢å¼ï¼ä¸è½ç¨å¤æ°å½¢å¼äºã
>>> dd.popitem()
('web', 'www.itdiffer.com')
>>> dd
{}
é½å äºï¼ç°å¨é£ä¸ªåå
¸æç©ºçäºã妿åå ï¼ä¼æä¹æ ·ï¼
>>> dd.popitem()
Traceback (most recent call last):
File "", line 1, in
KeyError: 'popitem(): dictionary is empty'
æ¥éä¿¡æ¯ä¸æç¡®åç¥ï¼åå
¸å·²ç»æ¯ç©ºçäºï¼æ²¡æåä¾å çä¸è¥¿äºã
###update
`update()`ï¼çååå°±çæµå°ä¸äºäºï¼æ¯ä¸æ¯æ´æ°åå
¸å
容å¢ï¼çç¡®æ¯ã
update(...)
D.update([E, ]**F) -> None. Update D from dict/iterable E and F.
If E present and has a .keys() method, does: for k in E: D[k] = E[k]
If E present and lacks .keys() method, does: for (k, v) in E: D[k] = v
In either case, this is followed by: for k in F: D[k] = F[k]
ä¸è¿ï¼çæ ·åè¿ä¸ªå½æ°æç¹å¤æãä¸è¦çæ¥ï¼éè¿å®éªå¯ä»¥ä¸ç¹ä¸ç¹é¼æ£æç½çã
é¦å
ï¼è¿ä¸ªå½æ°æ²¡æè¿åå¼ï¼æè
说è¿å弿¯Noneï¼å®çä½ç¨å°±æ¯æ´æ°åå
¸ãå
¶åæ°å¯ä»¥æ¯åå
¸æè
æç§å¯è¿ä»£ç对象ã
>>> d1 = {"lang":"python"}
>>> d2 = {"song":"I dreamed a dream"}
>>> d1.update(d2)
>>> d1
{'lang': 'python', 'song': 'I dreamed a dream'}
>>> d2
{'song': 'I dreamed a dream'}
è¿æ ·å°±æåå
¸d2æ´æ°å
¥äºd1é£ä¸ªåå
¸ï¼äºæ¯d1ä¸å°±å¤äºä¸äºå
å®¹ï¼æd2çå
容å
å«è¿æ¥äºãd2å½ç¶è¿åå¨ï¼å¹¶æ²¡æåå°å½±åã
è¿å¯ä»¥ç¨ä¸é¢çæ¹æ³æ´æ°ï¼
>>> d2
{'song': 'I dreamed a dream'}
>>> d2.update([("name","qiwsir"), ("web","itdiffer.com")])
>>> d2
{'web': 'itdiffer.com', 'name': 'qiwsir', 'song': 'I dreamed a dream'}
å表ä¸ä»¥å
ç»ä¸ºå
ç´ ï¼æ¯ä¸ªå
ç»æ¯ä¸ä¸ªé®å¼å¯¹ã
###has_key
è¿ä¸ªå½æ°çåè½æ¯å¤æåå
¸ä¸æ¯å¦åå¨æä¸ªé®ï¼å®ç®åä»
åå¨äºPython 2ï¼å¨Python 3ä¸åæ¶äºè¿ä¸ªå½æ°ã
has_key(...)
D.has_key(k) -> True if D has a key k, else False
è·åä¸èä¸éå°ç`k in D`类似ã
>>> d2
{'web': 'itdiffer.com', 'name': 'qiwsir', 'song': 'I dreamed a dream'}
>>> d2.has_key("web")
True
>>> "web" in d2
True
å¨Python 3ä¸ï¼ç±»ä¼¼å¤æä½¿ç¨`k in D`ï¼çè³å¨Python 2ä¸ï¼è¿ä¹æ¯å¾å¥½çæ¹æ³ã
å
³äºdictç彿°ï¼ä¼¼ä¹ä¸å°ã使¯ï¼ä¸ç¨çæ¥ï¼ä¹ä¸ç¨æ
å¿è®°ä¸ä½ï¼å ä¸ºæ ¹æ¬ä¸éè¦è®°å¿ãåªè¦ä¼ç¨æç´¢å³å¯ã
------
[æ»ç®å½](./index.md) | [ä¸èï¼åå
¸(1)](./116.md) | [ä¸èï¼éå(1)](./118.md)
å¦æä½ è®¤ä¸ºæå¿
è¦æèµæï¼è¯·éè¿æ¯ä»å®ï¼**[email protected]**,ä¸èææ¿ã