zoukankan      html  css  js  c++  java
  • python 字典

    字典dict

    • key value 键值对的数据集合
    • 可变的、无序的、key不重复

    字典dict定义 初始化

    • d = dict() 或者 d = {}
    • dict(**kwargs) 使用name=value对初始化一个字典
    • dict(iterable,**kwarg) 使用可迭代对象和name= value对构造字典,不过可迭代对象的元素必须是一个二元结构 d = dict((1:'a'),(2:'b'))
    • dict(mapping,**kwarg) 使用一个字典构建另一个字典
    • d = {'a':10,'b':20,'c':None,'d':[1,2,3]}
    • 类方法dict.fromkeys(iterable,value)  d = dict.fromkeys(5)  或者 d = dict.fromkeys(5,0)

    字典元素访问

    d[key]

    • 返回key对应的值value
    • key不存在抛出KeyError异常

    get[key[,default]]

    • 返回key对应的值value
    • key不存在返回缺省值,如果没有设置缺省值就返回None

    setdefault[key[,default]]

    • 返回key对应的值value
    • key不存在,添加kv对,value设置为default,并返回default,如果default没有设置,缺省为None

    字典增加和修改

    d[key] = value

    • 将key对应的值修改为value
    • key不存在添加新的kv对

    update([other]) -> None

    • 使用另一个字典的kv对更新本字典
    • key不存在,就添加
    • key存在,覆盖已经存在的key对应的值
    • 就地修改
    d = {}
    d.update(red=1)
    d.update((('red',2),))
    d.update({'red':3})
    d

    字典删除

    pop(key[,default])

    • key存在,移除他,并返回他的value
    • key不存在,返回给定的default
    • default未设置,key不存在则抛出KeyError异常

    popitem()

    • 移除并返回一个任意的键值对
    • 字典为empty,抛出KeyError异常

    clear()

    • 清空字典

    del语句

    a = True
    b = [6]
    d = {'a': 1, 'b': b, 'c': [1,3,5]}
    del a
    del d['c'] # 删除了一个对象[1,3,5]?
    del b[0] #根据索引删除
    c=b
    del c
    del b
    b = d['b']
    • del a['c']看着像删除了一个对象,本质上减少了一次对象的引用,del实际上删除的是名称,而不是对象

    字典遍历

    for ... in dict

    遍历key

    for k in d:
    
      print(k)
    
    for k in d.keys():
    
      print(k)

    遍历value

    for k in d:
        print(d[k])
    
    for k in d.keys():
        print(d.get(k))
    
    for v in d.values():
        print(v)

    遍历item,既kv对

    for item in d.items():
        print(item)
    
    for item in d.items():
        print(item[0],time[1])
    
    for k,v in d.items():
        print(k,v)
    
    for k,_ in d.items():
        print(k)
    
    for _,v in d.items():
        print(v)

    python3中,keys、values、items方法返回一个类似一个生成器的可迭代对象,不会把函数的返回结果复制到内存中

    • Dictionary view对象,可以使用len()、iter()、in操作
    • 字典的entry的动态试图,字典变化,试图将反映出这些变化
    • keys返回一个类set对象,也就是可以看做一个set集合。如果values都可以hash,那么items也可以看做是set对象

    字典的遍历和移除

    如何在遍历的时候移除元素

    错误的做法

    d = dict(a=1,b=2,c='abc')
    for k,v in d.items():
        d.pop(k)  #异常
    
    d = dict(a=1,b=2,c='abc')
    while len(d): #相当于清楚,不如clear
        print(d.popitem())
    
    d = dict(a=1,b=2,c='abc')
    while d:
        print(d.popitem())

     正确的做法

    d = dict(a=1,b=2,c='abc')
    keys = []
    for k,v in d.items():
        if isinstance(v,str):
            keys.append(k)
    for k in keys:
        d.pop(k)
    print(d)

    字典的key

    key的要求和set的元素要求一致

    • set的元素可以就是看做key,set可以看做dict的简化版
    • hashable 可哈希才可以作为key,可以使用hash()测试
    • d = {1 : 0, 2.0 : 3, "abc" : None, ('hello', 'world', 'python') : "string", b'abc' : '135'}
  • 相关阅读:
    Google V8编程详解(四)Context
    Google V8编程详解附录
    Google V8编程详解(三)Handle & HandleScope
    Google V8编程详解(二)HelloWorld
    Google V8编程详解(一)V8的编译安装(Ubuntu)
    Google V8编程详解(序)Cloud App
    makefile:2: *** 遗漏分隔符 。 停止
    HTTP协议各个参数详解
    java&android知识点汇总整理(不定期更新)
    错误一览表
  • 原文地址:https://www.cnblogs.com/xzkzzz/p/11202746.html
Copyright © 2011-2022 走看看