Python内置数据结构(字典)

字典

字典dict
key-value键值对的数据的集合
    可变的、无序的、key不重复的
字典dict定义、初始化
d = dict() 或者 d = {}
dict(**kwargs)使用name = value对初始化一个字典
dict(iterable,**kwarg)使用可迭代对象和name=value对构造字典,不过可迭代对象必须是一个二元结构
    d = dict(((‘a’,1),(‘b’,2)))或者 d = dict(([1,’a’],[2,’b’]))
dict(mapping,**kwarg)使用一个字典构建另一个字典
类方法dict.fromkeys(iterable,value)
    d = dict.fromkeys(range(5))
    d = dict.fromkeys(range(5),0)
字典元素的访问
d[key]
返回key对应的value值
如果key不存在,报keyerror异常
get[key[,default]]
如何key存在,返回key所对应的value,如果不存在返回设置的默认值default,如果没有设置缺省值,返回None
setdefault(key[,default])
返回key对应的value
key不存在,添加kv对,value为default,并返回default,如果缺省值没有设置,就返回为None
字典的增加和修改
d[key] = value
    将key对应的值修改为value
    如果key不存在则添加新的kv对
update([other]) ->None
    使用另一个字典的kv对更新本字典
    key不存在,就添加
   key存在,覆盖已经存在的key对应的值
    就地修改
—|——|——–|—例如
d = {‘a’:1,’b’:2}
d1 = {‘c’:3,’d’:4,’a’:5000}
d.update(d1)
d
{‘a’: 5000, ‘b’: 2, ‘c’: 3, ‘d’: 4}
=====================================
d.update(red=1)
d.update(((‘red’,2),))
d.update({‘red’:3})
字典的删除
pop(key[,default])
    key存在,就移除它,并返回它的value
    key不存在,返回给定的default
    default未设置,key不存在则抛出KeyError异常
popitem()
    移除并返回任意一个键值对
    字典为empty,抛出异常
cleat()
    清空字典
字典删除
del语句
del a[‘c’] 看着像是删除了一个对象,本质上减少了一个对象的引用,del实际上删除的是名称,而不是对象
字典的遍历
使用for .. in dict:
    遍历key
    for k in d:
        print(k) 返回的是key
    for k in d.keys():
        print(k)
    遍历value
    for i in d:
        print(d[i])
    for i in d.values():
        print(i)
    for i in d.keys():
        print(d.get(i))
    遍历item,即kv对
    for j in d.items():
        print(j)  返回的是二元元组
    for k,j in d.items():#使用封装和解构
        print(k,j)
总结:keys、values、items方法返回一个类似一个生成器的可迭代对象,不会把函数的结果复制到内存中
字典的遍历和移除
在进行字典的移除操作,要遍历的可迭代对象的size不会发生改变,否则回报错
只有可哈希的才可以作为key
defaultdict
collections.defaultdict([default_factory[,…]])
   第一个参数default_factory,缺省是None,它提供一个初始化函数。当key不存在的时候,会调用这个工厂函数来生成key所对应的value
import random
d1 = {}
for i in  ‘abcdef’:
    for j in range(random.randint(1,5)):
        if i not in d1.keys():
            d1[i] = []
        else:
            d1[i].append(j)
print(d1)
from collections import defaultdict
import random
d1 = defaultdict(list)
for i in ‘abcdef’:
    for j in range(random.randint(1,5)):
        d1[i].append(j)
print(d1)
OrderedDict
collections.OrdereDict([items])
    key并不是按照加入的顺序排列,可以使用OrderedDict记录排序
有序字典可以记录元素插入的顺序,打印时也是按照这个顺序输出打印

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/95428

(0)
SignalSignal
上一篇 2018-04-08 17:06
下一篇 2018-04-08 17:08

相关推荐

  • 杨辉三角专题

    杨辉三角;二项式

    2018-04-09
  • Python 部分知识点总结(九)

    此篇博客只是记录第十一周未掌握或不熟悉的知识点,用来加深印象。

    Python笔记 2018-05-21
  • Python内建函数

    内建函数 标识id() 返回对象的唯一标识,CPython返回内存地址 哈希hash() 返回一个对象的hash值 类型type() 返回对象的类型 类型转换 int()、float()、bin()、hex()、oct()、bool()、list()、tuple()、dict()、set()、complex()、bytes()、bytearray() 输入i…

    2018-04-08
  • Python高阶函数及装饰器

    First Class Object 函数在Python中是一等公民 函数也是对象,可调用的对象 函数可作为普通变量、参数、返回值等 高阶函数 数学定义:y=g(f(x)) 高阶函数需满足的条件,至少其一 接受一个或多个函数作为参数 输出一个函数 内建函数的高阶函数 排序:sorted(iterable[,key][,reverse]) 返回一个新列表,对一…

    2018-04-22
  • Python函数返回值、作用域以及树的概念

    Python函数返回值、作用域以及树的概念

    Python笔记 2018-04-15
  • 树 非线性结构,每个元素可有多个前驱和后继 树是n(n>=0)个元素的集合,n=0时,称为空树,树只有一个特殊的没有前驱的元素,称为树的根root,树中除了根结点外,其余元素只能有一个前驱,可以有零个和多个后继,子树也有自己的根 结点:树中的数据元素 结点的度degree:结点拥有的子树的数目称为度,记作d(v)。树的度是树内各结点的度最大值 叶子结点…

    2018-04-16