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

相关推荐