py06-python基础-字典

1、字典:

   作用:存多个值,key-value存取,取值速度快,字典是无序的。

   定义:key必须是可变类型,value可以是任意类型

     定义方式:

info={'name':'egon','age':18,'sex':'male'}
本质上

info=dict({'name':'egon','age':18,'sex':'male'})

info=dict(name='egon',age=18,sex='male')

{}.fromkeys(('name','age','sex'),None)
info=dict.fromkeys(('name','age','sex'),None)

 2、常用操作

  取值:

info=dict(name='egon',age=18,sex='male')
print(info['name'])    #如果key值不存在,会报错

  获取值:

info=dict(name='egon',age=18,sex='male')
print(info.get('name')   
info=dict(name='egon',age=18,sex='male')
print(info.get('name1','not key'))
 #如果key值不存储,不会报错,会打印none,也可以指定值不存在时,打印信息

  存值:

info={'name':'egon','age':18,'sex':'male'}
info['height']=1.90
print(info)

   删除值:

info={'name':'egon','age':18,'sex':'male'}
info['height']=1.90
print(info.pop('age'))
print(info)
#如果key值不存在,会报错

解决:
info={'name':'egon','age':18,'sex':'male'}
info['height']=1.90
print(info.pop('age1','not key'))
print(info)
#不存在时,自定义打印,也可以是None
info={'name':'egon','age':18,'sex':'male'}
info['height']=1.90
print(info.pop('age1',None))
print(info)

   字典中的key是不可变类型,value是可变类型

  key不可用是字符串,数字

  key可以是元组,列表

cmd={'(a,b)':1}
print(cmd['(a,b)'])

   字典的其他操作:

  弹出key和value

info={'name':'egon','age':18,'sex':'male'}
print(info.popitem())
print(info)

 

  获取字典所有的key

info={'name':'egon','age':18,'sex':'male'}
print(info.keys())

  获取字典所有的value

info={'name':'egon','age':18,'sex':'male'}
print(info.values())

  for循环获取key

info={'name':'egon','age':18,'sex':'male'}
for key in info.keys():
    print(key)

  for循环获取value

info={'name':'egon','age':18,'sex':'male'}
for value in info.values():
    print(value)

  获取所有key和value,然后存储到一个小元组里面

info={'name':'egon','age':18,'sex':'male'}
print(info.items())

  一一对应的例子

key,value=('a','b')
print(key)
print(value)

  直接获取字典的key和value

info = {'name': 'egon', 'age': 18, 'sex': 'male'}
for key,value in info.items():
    print(key,value)

  拷贝一个字典

info = {'name': 'egon', 'age': 18, 'sex': 'male'}
l=info.copy()
print(l)

  清空字典

info = {'name': 'egon', 'age': 18, 'sex': 'male'}
info.clear()
print(info)

  更新字典

info = {'name': 'egon', 'age': 18, 'sex': 'male'}
cmd={'hobby':'play1'}
info.update(cmd)
print(info)

#用cmd 这个字典去更新info这个字典,没有的会添加,如果有的会更新
info = {'name': 'egon', 'age': 18, 'sex': 'male'}
cmd={'name':'sb'}
info.update(cmd)
print(info)

 

  空字典,追加内容

d={}
print(d)
d['name']='egon'
d['age']=19
d['sex']='male'
d['hobby']=[]
d['hobby'].append('play1')
d['hobby'].append('play2')
d['hobby'].append('play3')
print(d)

#由于hobby可以是多个值,需要列表,这种方法,只能先定义一个空的列表,然后再添加值

 

  空字典setfefault 会自动生成列表

d={}
d['name']='egon'
d['age']=19
d['sex']='male'
d.setdefault('hobby',[])
print(d)
#直接定义列表,然后再添加值
d={}
d['name']='egon'
d['age']=19
d['sex']='male'
d.setdefault('hobby',[]).append('play1')
d.setdefault('hobby',[]).append('play2')
d.setdefault('hobby',[]).append('play2')
print(d)

 

  练习题

  

1 有如下值集合 [11,22,33,44,55,66,77,88,99,90],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。

  即: {'k1': 大于66的所有值, 'k2': 小于66的所有值}

d=[11, 22, 33, 44, 55, 66, 77, 88, 99, 90]
l={
    'k1':[],
    'k2':[],
}
for key in d:
    if key > 66:
        l['k1'].append(key)
    else:
        l['k2'].append(key)
print(l)

 2 统计s='hello alex alex say hello sb sb'中每个单词的个数

  结果如:{'hello': 2, 'alex': 2, 'say': 1, 'sb': 2}

s='hello alex alex say hello sb sb'
l={}
word=s.split()
for words in word:
       if words not in l:
           l[words]=1
       else:
            l[words]+=1
print(l)

 

posted @ 2017-07-19 11:45  sysgit  阅读(259)  评论(0编辑  收藏  举报