Python之字典

1.1字典的特征

key-value键值对的数据的集合
可变的,无序的,key不重复

1.2字典的dict定义,初始化

d = dict() 或者 d = {} 
dict(**kwargs) 使用name=value对初始化一个字典 
    #dc = dict(name='harden',age=18)
dict(iterable, **kwarg) 使用可迭代对象和name=value对构造字典,不过可迭代对象的元素必须是 一个二元结构     
    #dc = dict([('a',1),('b',2)]) & d = dict(((1,'a'),(2,'b'))) & d = dict(([1,'a'],[2,'b']))
类方法dict.fromkeys(iterable, value) 
    #d = dict.fromkeys(range(5)) 
    #d = dict.fromkeys(range(5),0)

1.3字典的元素访问

d[key] 
    返回key对应的值value 
    key不存在抛出KeyError异常 
get(key[, default]) 
     返回key对应的值value
      key不存在返回缺省值,如果没有设置缺省值就返回None 
setdefault(key[, default]) 
    返回key对应的值value 
     key不存在,添加kv对,value为default,并返回default,如果default没有设置,缺省为None

1.4字典的增加和修改

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})

1.5字典的删除

pop(key[, default]) 
    key存在,移除它,并返回它的value 
    key不存在,返回给定的default 
    default未设置,key不存在则抛出KeyError异常 
popitem()
    移除并返回一个任意的键值对 
    字典为empty,抛出KeyError异常 
clear()
    清空字典

1.6字典的遍历: 

1.遍历key
for k in d:
    print(k)
for k in d.keys():
    print(k)

  

2.遍历value
for k in d:
    print(d[k])
for v in d.values():
    print(v)
for k in d.keys():
    print(d[k])

 

3.遍历kv对
for item in d.items():
    print(item)
for item in d.items():
    print(item[0],item[1])
for k,v in d.items():
    print(k,v)

  

Python3中,keys、values、items方法返回一个类似一个生成器的可迭代对象,不会把函数的返回结 果复制到内存中
    Dictionary view对象 
    字典的entry的动态的视图,字典变化,视图将反映出这些变化

1.6.1正确的遍历(for循环迭代字典的时候,不能操作此字典)

d = dict(a=1,b=2,c='abc)
for k,v in d.items():
    d.pop(k) #异常

 

d = dict(a=1, b=2, c='abc') 
keys = [] 
for k,v in d.items():
    if isinstance(v, str): 
        keys.append(k)
for k in keys: 
    d.pop(k) 
print(d)

1.7字典的key

key的要求和set的元素要求一致 
    set的元素可以就是看做key,set可以看做dict的简化版 
    hashable 可哈希才可以作为key,可以使用hash()测试 

1.8defaultdict

collections.defaultdict([default_factory[, ...]]) 
    第一个参数是default_factory,缺省是None,它提供一个初始化函数。当key不存在的时候,会调用 这个工厂函数来生成key对应的value 
from collections import defaultdict 
import random
d1 = defaultdict(list)
for k in 'abcdef': 
    for i in range(random.randint(1,5)): 
        d1[k].append(i)
print(d1)    
#不到入defaultdict模块时的操作
import
random d1 = {}

for k in 'abcdef':   for i in range(random.randint(1,5)):   if k not in d1.keys():   d1[k] = []   d1[k].append(i) print(d1)

1.9OrderedDict

collections.OrderedDict([items]) 
     key并不是按照加入的顺序排列,可以使用OrderedDict记录顺序 
应用场景:
假如使用字典记录了N个产品,这些产品使用ID由小到大加入到字典中 
除了使用字典检索的遍历,有时候需要取出ID,但是希望是按照输入的顺序,因为输入顺序是有序的
否则还需要重新把遍历到的值排序

  

posted @ 2018-04-03 00:04  亚洲哈登  阅读(186)  评论(0编辑  收藏  举报