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

相关推荐

  • IPython封装解构和集合

    IPython Shell命令 !command 执行shell命令 !ls -l , !touch a.txt file = !ls -l | grep py 魔术方法 使用%开头的,IPython内置的特殊方法 %magic 格式 %开头是line magic %% 开头是cell magic,notebook的cell %alias 定义一个系统命令的…

    Python笔记 2018-03-31
  • Python学习第十三周总结

    网络协议和管理、http服务和Apache

    2018-06-03
  • Python文件操作

    计算机体系架构 运算器:完成各种算术运算、逻辑运算、出具传输等数据加工处理 控制器:控制程序的执行 CPU = 运算器 + 控制器 存储器:用于记忆程序的数据,内存 输入设备:将数据或程序输入到计算机中 输出设备:将数据或程序的处理结果展示给用户 文件IO常用操作 open 打开 read 读取 write 写入 close 关闭 readline 行读取 …

    Python笔记 2018-05-02
  • Linux介绍

    Linux介绍 Linux概述 Linux概述 Linux内核由芬兰人Linus Torvalds 1991年根据386架构开发。Linux是系统的内核并非系统,之后的RED HALT 、Centos等都是以Linux为内核的类UNIX操作系统。 1969年UNIX系统由THOMPSON和D.M.Riche在美国贝尔实验室开发 1990年芬兰人Linus T…

    Python笔记 2018-03-26
  • 文件IO常用操作

    io模块 StringIO BytesIO 类
    pathlib模块 路径操作 3.4版本开始
    os模块 更改权限、显示信息 3.4版本之前路径操作
    shuril 模块(高级文件操作
    csv 文件
    configparser模块 ini文件处理

    2018-05-02