python3 高效使用Python字典、列表

  1. in关键字检查key是否存在
if 'name' in d:
    pass
  1. get获取字典中的值
print(d.get("name", "default"))
  1. setdefault为字典中不存在的key设置缺省值
data = [
        ("animal", "bear"),
        ("animal", "duck"),
        ("plant", "cactus"),
        ("vehicle", "speed boat"),
        ("vehicle", "school bus")
    ]
groups = {}
for (key, value) in data:
    groups.setdefault(key, []).append(value)
  1. defaultdict初始化字典对象
from collections import defaultdict

groups = defaultdict(list)
for (key, value) in data:
    # 当key不存在于字典中时,list函数将被调用并返回一个空列表赋值给d[key]
    groups[key].append(value)
  1. fromkeys将列表转换成字典
keys = {'a', 'e', 'i', 'o', 'u' }
value = []
d = dict.fromkeys(keys, value)
print(d)
  1. 用字典实现switch ... case语句
data = {
    0: "zero",
    1: "one",
    2: "two",
}
data.get(arg, "nothing")
  1. 使用iteritems迭代字典中的元素
d = {
    0: "zero",
    1: "one",
    2: "two",
}
for k, v in d.items():
    print(k, v)
  1. 使用字典推导式
numbers = [1, 2, 3]
d = {number: number * 2 for number in numbers}
  1. list 操作
# deque 是一个双向队列的数据结构,删除元素和插入元素会很快
from collections import deque
names = deque(['raymond', 'rachel', 'matthew', 'roger',
               'betty', 'melissa', 'judith', 'charlie'])
names.popleft()
names.appendleft('mark')
  1. list 深拷贝
arr = list()
# 模块
from copy import deepcopy
c_arr = deepcopy(arr)
# 切片
b_arr = arr[:]
  1. dict 生成
def key_value_gen(k):
   yield chr(k+65)
   yield chr((k+13)%26+65)
d = dict(map(key_value_gen, range(26)))
  1. iter()可接收callable参数
def random_num():
    return randint(0,10)
# iter第一个参数必须是可调用的对象,用于不断调用,产出各个值
# 第二个值是哨符,这是个标记值,当可调用的对象返回这个值时, 触发迭代器抛出StopIteration异常,而不产出哨符
num = iter(random_num, 0)
for i in num:
    print(i)
  1. 动态地创建新类型
# type的第一个参数就是类名,第二个参数是继承的父类,第三个参数是类的属性
>>> NewType = type("NewType", (object,), {"x": "hello"})
>>> n = NewType()
>>> n.x
"hello"
  1. 字典的get()和setdefault()方法
d = {'key':123}
# 使用的d.get('key'),key不存在时它返回的是None,可用第二个参数0取代返回的None
v = sum.get('', 0)
# 如果字典中存在key,那么就直接返回d[key],否则设置d[key]=value
# 先查询键名,如存在就返回其值,否则直接给其键名赋值
v = d.setdefault('',456)
  1. collections.Counterdict的子类,用来统计可哈稀对象
>>> cnt = Counter('helloworld')
>>> cnt
Counter({'l': 3, 'o': 2, 'e': 1, 'd': 1, 'h': 1, 'r': 1, 'w': 1})
>>> cnt['l']
3
>>> cnt['x'] = 10
>>> cnt.get('y')

你可能感兴趣的:(python3 高效使用Python字典、列表)