# 1.判斷字典key是否存在# in的處理速度更快,has_key方法在python3被移除
def has_dict_key():
d =
# bad:
if d.has_key('name'):
d.get('name')
# good
if 'name' in d:
d.get('name')
# 2.使用git獲取字典的值
# 使用d[x]訪問元素,如果key不存在報keyerror錯誤
def get_dict_value():
d =
# bad
if 'name' in d:
print(d['hello'])
else:
print('default')
# good
print(d.get("name", "default"))
# 3用setdefault為字典中不存在的key設定預設值
"""setdefault 的作用是:
如果 key 存在於字典中,那麼直接返回對應的值,等效於 get 方法
如果 key 不存在字典中,則會用 setdefault 中的第二個引數作為該 key 的值,再返回該值。
"""def set_dict_default():
data = [
("animal", "bear"),
("animal", "duck"),
("plant", "cactus"),
("vehicle", "speed boat"),
("vehicle", "school bus")
]groups = {}
for (key, value) in data:
print groups
# 用defaultdict初始化字典物件
def default_dict():
from collections import defaultdict
data = [
("animal", "bear"),
("animal", "duck"),
("plant", "cactus"),
("vehicle", "speed boat"),
("vehicle", "school bus")
]groups = defaultdict(list)
for (key, value) in data:
# 用fromkeys將列表轉換成字典
def from_keys():
keys = # ['a', 'b'] keys = ('a', 'b')
value =
d = dict.fromkeys(keys, value)
print d #
# 用字典實現switch...case語句
def use_dict(arg):
if arg == 0:
return 'zero'
elif arg == 1:
return 'one'
elif arg == 2:
return "two"
else:
return "nothing"
data =
data.get(arg, "nothing")
# 使用iteritems迭代字典中的元素
def for_dict():
d =
for k, v in d.items(): # 迭代超大字典的時候,記憶體瞬間擴大二倍
print(k, v)
for k, v in d.iteritems(): # 惰性載入
print k, v
# 使用字典推導式
def ceat_dict():
numbers = [1, 2, 3]
# bad
d1 = dict([(number, number * 2) for number in numbers])
# good
d =
讓Python更高效的技巧
記得朋友說過這樣的話 在我們指責機器配置不高,程式速度慢的時候,我們應該找找自己的程式 寫的不高效.因為現在的電腦硬體已經很強大,當遇到瓶頸後,多找找自己 的問題,不要總是指責機器的不是 越來越覺得這句話很實在,而這裡造成我們的 執行速度不夠快的原因有多方面,第乙個當然是演算法設計本身,這個相對好處...
ListView 更高效的使用 Adapter
一 adapter adapter是listview和資料來源之間的中間人。當每條資料進入可見區時,adapter會呼叫他的getview 方法,並返回代表具體資料的檢視。滾動的時候頻繁呼叫,支援成千上萬的資料。最簡單的方法,最慢最不實用 public void getview int positi...
怎麼讓分頁更高效
最基本的分頁方式 select from where order by limit 在中小資料量的情況下,這樣的sql足夠用了,唯一需要注意的問題就是確保使用了索引 舉例來說,如果實際sql類似下面語句,那麼在category id,id兩列上建立復合索引比較好 select from articl...