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
下一篇 2018-04-08

相关推荐

  • 杨辉三角专题

    杨辉三角;二项式

    2018-04-09
  • StringIO

    StringIOio模块中的类From io import StringIO内存中,开辟的一个文本模式的buffer,可以像文件对象一样操作它当close方法被调用的时候,这个buffer会被释放StringIO操作getvalue() 获取全部内容。跟文件指针没有关系from io import StringIO# 内存中构建sio = StringIO(…

    Python笔记 2018-05-07
  • 函数与生成器

    函数 由若干语句组成的语句块,函数名,参数列表构成,是组织代码的最小单元,完成一定的功能,结构化编程对代码的最基本的封装,封装的目的是为了复用 函数中没有return,隐式会返回一个none值 定义中的参数列表成为形式参数,只是一种形式表达,简称形参 调用时写的参数是实际参数,是实实在在传入的值,简称实参 函数的定义,只是声明了参数,不会执行,可以进行调用,…

    2018-04-16
  • Python数据结构

    数据结构个人总结,方便以后查找。

    Python笔记 2018-04-01
  • Python内置数据结构——字符串

    知识结构图 学习笔记 字符串 字符组成的有序序列,字符的集合 使用单引号、双引号、三引号引起来的字符序列 不可变对象 Unicode类型 定义 单引号、双引号、三引号 r、R:引号内的字符原样输出 元素访问 索引访问 可迭代 join连接 “string“.join(iteratable) 使用string作为分隔符将可迭代对象连接起…

    2018-03-31
  • 日志分析项目

    日志分析

    2018-05-07