# 1.判断字典key是否存在 # in的处理速度更快,has_key方法在python3被移除 def has_dict_key(): d = {'name': 'python'} # 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 = {'name': 'python'} # 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: groups.setdefault(key, []).append(value) 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: groups[key].append(value) # 用fromkeys将列表转换成字典 def from_keys(): keys = {'a', 'b'} # ['a', 'b'] keys = ('a', 'b') value = [] d = dict.fromkeys(keys, value) print d # {'a': [], 'b': []} # 用字典实现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 = { 0: "zero", 1: "one", 2: "two", } data.get(arg, "nothing") # 使用iteritems迭代字典中的元素 def for_dict(): d = { 0: "zero", 1: "one", 2: "two", } 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 = {number: number * 2 for number in numbers}
使用python更高效
最新推荐文章于 2024-02-29 20:25:14 发布