字典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