1)定义python
Key-value键值对的数据的集合,可变的无序的,key不重复app
2) 初始化,定义.dom
d={} 空的函数
d=dict(a=1,b=2) {'a': 1, 'b': 2}
类方法。d=dict.fromkeys(range(5))对象
d=dict.fromkeys(range(5),0)排序
dict(**kwargs) 使用name=value对初始化一个字典内存
dict(iterable, **kwarg) 使用可迭代对象和name=value对构造字典,不过可迭代对象的元素必须是一个二元结构字符串
d = dict(((1,'a'),(2,'b'))) 或者 d = dict(([1,'a'],[2,'b']))get
dict(mapping, **kwarg) 使用一个字典构建另外一个字典string
d = {'a':10, 'b':20, 'c':None, 'd':[1,2,3]}
3) 字典元素的访问
d[key] 返回key对应的值。
key不存在抛出KeyError异常
get (key[,default]) d.get(6,2000)不会报错。 key 不存在返回缺省值。
返回key对应的值value
key不存在返回缺省值,若是没有设置缺省值就返回None
setdefault(key[,default])
setdefault(100,300)不存在的话建立,存在的话不改变。
返回key对应的值value
key不存在,添加kv对,value为default,并返回default,若是default没有设置,缺省为None
4) 增长和修改。
d=[key]=100将key对应的值修改成value。建立后直接赋值。Key存在不变,不存在直接赋值。Key是惟一的,key的位置是随机的。
d[key] = value
将key对应的值修改成value
key不存在添加新的kv对
update([other]) -> None
使用另外一个字典的kv对更新本字典
key不存在,就添加
key存在,覆盖已经存在的key对应的值
就地修改
d.update(red=1)
d.update((('red',2),))
d.update({'red':3})
5)字典删除。
pop(key[,default])。弹出元素。pop(key)
popitem () 移除并返回一个任意的键值对。
返回的是二元组,,key和value对应的。
clear()清空字典。
6)字典删除del。
del实际上删除的是名称,而不是对象。本质上减小了一个对象的引用。
7)字典的遍历。 for i in dict 拿出全部的key。拿到的都是key值。
遍历k
for k in d.keys(): for k in d:
print(k) print(k)
for key in d.keys():
print(key)
遍历value
for value in d.values(): for k in d:
print(value) print(d.get(k))
for k in d:
print(d[k]) for k in d.keys():
print(d.get(k))
遍历k,v对
for key,value in d.items():
print(key,value)
for k ,_ in d.items():
print(k)
for _,v in d.items():
print(v)
8)字典遍历的总结。
Keys,values,Items方法返回一个相似一个生成器的可迭代对象,不会把函数的返回值复制到内存中。
dictionary view对象。
字典的entry的动态的试图,字典变化,视图将反应出这些变化。
9) 字典遍历和移除元素
移除字符串,str。
keys=[]
for k in keys:
d.pop(k)
print(k)
for 循环过程当中是坚定不容许移除元素的。
10)字典的key
要求必须和set的元素要求一致,,
Key必须可hash,key是去重复的。
d = {1 : 0, 2.0 : 3, "abc" : None, ('hello', 'world', 'python') : "string", b'abc' : '135'}
{1: 0, 2.0: 3, b'abc': '135', 'abc': None, ('hello', 'world', 'python'): 'string'}
11) defaultdict
collections.defaultdict([default_factory[, ...]])
collentions.default
import random
from collections import defaultdict
d=defaultdict(list)
for i in 'abcdef':
for i in range(random.randint(1,5)):
d[k].append(i)
print(d)
12) ordereddict有序的字典。
collections.OrderedDict([items])
key并非按照加入的顺序排列,可使用OrderedDict记录顺序
from collections import OrderedDict
import random
d={'banana':3,'apple':4,'pear':1,'orange':2}
print(d)
keys=list(d.keys())
random.shuffle(keys)
print(keys)
od=OrderedDict()
for key in keys:
od[key]=d[key]
print(od)
print(od.keys())
有序字典能够记录元素插入的顺序,打印的时候也是按照这个顺序输出打印。
应用的用途:
假如使用字典记录了N个产品,这些产品使用ID由小到大加入到字典中
除了使用字典检索的遍历,有时候须要取出ID,可是但愿是按照输入的顺序,由于输入顺序是有序的
不然还须要从新把遍历到的值排序