亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Python > 正文

python兩種遍歷字典(dict)的方法比較

2020-02-23 05:24:42
字體:
來源:轉載
供稿:網友

python以其優美的語法和方便的內置數據結構,贏得了不少程序員的親睞。
其中有個很有用的數據結構,就是字典(dict),使用非常簡單。說到遍歷一個dict結構,我想大多數人都會想到 for key in dictobj 的方法,確實這個方法在大多數情況下都是適用的。但是并不是完全安全,請看下面這個例子:
代碼如下:
#這里初始化一個dict
>>> d = {'a':1, 'b':0, 'c':1, 'd':0}
#本意是遍歷dict,發現元素的值是0的話,就刪掉
>>> for k in d:
...   if d[k] == 0:
...     del(d[k])
...
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
RuntimeError: dictionary changed size during iteration
#結果拋出異常了,兩個0的元素,也只刪掉一個。
>>> d
{'a': 1, 'c': 1, 'd': 0}

>>> d = {'a':1, 'b':0, 'c':1, 'd':0}
#d.keys() 是一個下標的數組
>>> d.keys()
['a', 'c', 'b', 'd']
#這樣遍歷,就沒問題了,因為其實其實這里遍歷的是d.keys()這個list常量。
>>> for k in d.keys():
...   if d[k] == 0:
...     del(d[k])
...
>>> d
{'a': 1, 'c': 1}
#結果也是對的
>>>
其實,這個例子是我簡化過的,我是在一個多線程的程序里發現這個問題的,所以,我的建議是:遍歷dict的時候,養成使用 for k in d.keys() 的習慣。
不過,如果是多線程的話,這樣就絕對安全嗎?也不見得:當兩個線程都取完d.keys()以后,如果兩個線程都去刪同一個key的話,先刪的會成功,后刪的那個肯定會報 KeyError ,這個看來只能通過其他方式來保證了。


另一篇:dict 兩種遍歷方式的性能對比

關于糾結dict遍歷中帶括號與不帶括號的性能問題
代碼如下:
for (d,x) in dict.items():
     print "key:"+d+",value:"+str(x)

for d,x in dict.items():
    print "key:"+d+",value:"+str(x)

帶括號和不帶括號性能測試結果:

代碼如下:
測試結果
測試條數:15
帶括號開始時間:2012-06-14 12:13:37.375000
帶括號結束時間:2012-06-14 12:13:37.375000
時間間隔:0:00:00
不帶括號開始時間:2012-06-14 12:13:37.375000
不帶括號結束時間:2012-06-14 12:13:37.375000
時間間隔:0:00:00

測試條數:50
帶括號開始時間:2012-06-14 12:13:57.921000
帶括號結束時間:2012-06-14 12:13:57.921000
時間間隔:0:00:00
不帶括號開始時間:2012-06-14 12:13:57.921000
不帶括號結束時間:2012-06-14 12:13:57.937000
時間間隔:0:00:00.016000
測試條數:100
帶括號開始時間:2012-06-14 11:53:57.453000
帶括號結束時間:2012-06-14 11:53:57.468000
時間間隔:0:00:00.015000
不帶括號開始時間:2012-06-14 11:53:57.468000
不帶括號結束時間:2012-06-14 11:53:57.531000

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕亚洲无线码a| 国产精品69精品一区二区三区| 黑人巨大精品欧美一区二区一视频| 国产精品91在线观看| 欧美丰满少妇xxxxx| 另类天堂视频在线观看| 最新中文字幕亚洲| 成人妇女免费播放久久久| 欧美成人网在线| 亚洲精品久久久久中文字幕二区| 裸体女人亚洲精品一区| 亚洲精品国产免费| 97久久精品人人澡人人爽缅北| 亚洲国产精品久久久久秋霞不卡| 欧美精品情趣视频| 亚洲国产日韩欧美综合久久| 亚洲毛片在线免费观看| 亚洲精品福利在线观看| 精品毛片网大全| 国产精品亚洲激情| 在线精品国产成人综合| 成人亚洲综合色就1024| 日本精品免费一区二区三区| 一夜七次郎国产精品亚洲| 亚洲国产精品va在线观看黑人| 97视频在线观看免费| 国产精品一区二区女厕厕| 亚洲欧洲激情在线| 国产精品成人aaaaa网站| 韩国精品美女www爽爽爽视频| 欧美日韩在线观看视频小说| 国产精品国模在线| 欧美日韩激情网| 久久免费成人精品视频| 色妞在线综合亚洲欧美| 久久久久国色av免费观看性色| 欧美国产日产韩国视频| 亚洲国产精品字幕| 欧美成人精品三级在线观看| x99av成人免费| 国产精品第一区| 久久久精品国产亚洲| 久久久精品999| 亚洲免费中文字幕| 亚洲欧洲日本专区| 九九精品视频在线| 色综合男人天堂| 91色精品视频在线| 成人免费看黄网站| 97视频免费观看| 成人免费网视频| 久久精品99国产精品酒店日本| 亚洲成**性毛茸茸| 久久网福利资源网站| 91网站在线看| 日韩精品免费综合视频在线播放| 午夜精品一区二区三区在线播放| 久久精品国产视频| 久久久久久久久电影| 国产黑人绿帽在线第一区| 成人精品久久av网站| 在线观看国产成人av片| 亚洲欧洲成视频免费观看| 亚洲国产成人爱av在线播放| 欧美黑人xxx| 欧美日韩亚洲激情| 最近2019免费中文字幕视频三| 国产这里只有精品| 国产精品福利观看| 亚洲男人第一av网站| 国产精品视频一区二区三区四| 欧美激情欧美激情在线五月| 在线观看欧美成人| 日本高清视频精品| 亚洲人成电影在线观看天堂色| 亚洲自拍偷拍一区| 欧美又大又粗又长| 欧美一级免费看| 亚洲国产女人aaa毛片在线| 国产91精品久久久久久久| 欧美激情手机在线视频| 欧美日韩国产一区二区| 国产精品久久一区主播| 亚洲淫片在线视频| 久久久999精品视频| 亚洲a中文字幕| 亚洲欧美精品一区| 亚洲一区二区三区久久| 国产精品wwww| 国产日韩欧美一二三区| 一区二区三区国产在线观看| 日韩动漫免费观看电视剧高清| 黄色成人av在线| 日韩欧美在线网址| 国产美女精品视频| 亚洲黄色在线观看| 色偷偷88888欧美精品久久久| 精品国产一区二区三区久久狼黑人| 亚洲性视频网站| 亚洲国产精品网站| 福利一区福利二区微拍刺激| 亚洲开心激情网| 成人激情视频小说免费下载| 色综合91久久精品中文字幕| 91网站在线看| 亚洲欧美激情精品一区二区| 久久琪琪电影院| 中文字幕亚洲欧美一区二区三区| 久久香蕉国产线看观看网| 亚洲一二在线观看| 2021久久精品国产99国产精品| 91精品国产自产在线老师啪| 欧美性xxxxxxx| 欧美精品在线免费观看| 久久国产加勒比精品无码| 国产三级精品网站| 成人精品在线视频| 日韩美女在线看| 日韩视频免费看| 最近2019年日本中文免费字幕| 日韩av大片在线| 亚洲男人天堂网| 欧美视频免费在线| 国模吧一区二区| 亚洲影院高清在线| 久久久久久久激情视频| 日韩中文字幕欧美| 日韩av免费在线看| 国产999精品| 国产精品www色诱视频| 久久免费在线观看| 欧美国产日韩在线| 伊人伊成久久人综合网站| 国产成人亚洲精品| 91亚洲精华国产精华| 91精品国产综合久久香蕉最新版| 最近2019中文字幕第三页视频| 亚洲一区中文字幕| 国产精品免费福利| 欧美国产在线电影| 91香蕉嫩草影院入口| xxx一区二区| 性色av一区二区三区在线观看| 8050国产精品久久久久久| 97视频在线观看视频免费视频| 69av在线视频| 亚洲日本成人网| 欧美激情中文网| 国产mv免费观看入口亚洲| 91精品国产91久久久久久久久| 亚洲乱码一区二区| 色综合天天狠天天透天天伊人| 国产欧美一区二区白浆黑人| 欧美成人剧情片在线观看| 国产精品久久久久99| 68精品国产免费久久久久久婷婷| 亚洲人成网7777777国产| 国产精品美女av| 成人性教育视频在线观看| 国产在线播放不卡| 亚洲成人久久久久| 韩国日本不卡在线| 97精品免费视频| 69精品小视频|