zoukankan      html  css  js  c++  java
  • [python]pythonic的字典常用操作

    注意:dct代表字典,key代表键值

    1.判断字典中某个键是否存在

    实现

    dct.has_key(key)  #False
    

    更Pythonic方法

    key in dct  #False
    

    2.获取字典中的值
    你想对key的value加1,首先你要判断key是否存在,不存在给一个默认值

    实现

    if key not in dct:
    	dct[key] = 0
    dct[key] += 1
    

    更Pythonic方法

    dct[key] = dct.get(key, 0) + 1
    

    如果key存在则返回对应的value,如果不存在返回默认值(这里是0)

    3.字典的value是可变对象
    如果这个可变对象为list,你想初始化并修改它们。
    实现

    for (key, value) in data:
    	# 把key和value以元组的结构存到list中
    	if key in dct:
    		dct[key].append(value)
    	else:
    		dct[key] = [value]
    

    更Pythonic方法

    for (key, value) in data:
    	dct.setdefault(key, []).append(value)
    

    更更Pythonic方法

    dct = defaultdict(list)  # 字典value的默认值为[]
    for (key, value) in data:
    	dct[key].append(value)
    

    dct = defaultdict(list) 等同于 dct.setdefault(key, []) 据说前者快。
    defaultdict详解

    4.合并两个字典

    a = {'a':1,'b':2}
    b = {'c':3}
    
    # 方法1
    new_dict = a
    new_dict.update(b)
    
    # 方法2
    new_dict = dict(a.items()+b.items())
    
    # 方法3(Pythonic)
    new_dict = dict(a, **b)
    

    如果合并两个字典的时候,如果两个字典有相同的key,则把value相加

    from collections import Counter
    a = {'a':1,'b':2}
    b = {'a':1}
    
    c = Counter(a) + Counter(b)  # 此时c为Counter对象
    c = dict(c)  # 转变成字典
    print c
    # {'a': 2, 'b': 2}
    

    参考:

  • 相关阅读:
    架构设计的方法学 【转】
    异常处理
    Java中---HashSet中的Set()方法不能加重复值的原因,唯一性
    java中Set集合
    java中foreach语法和总结
    泛型的处理
    迭代器错误处理
    防重复提交
    mqtt安装和使用
    字符串正则替换
  • 原文地址:https://www.cnblogs.com/xueweihan/p/5160998.html
Copyright © 2011-2022 走看看