基础数据类型:字典

字典这种类型的数据结构被称为‘映射’,字典是Python中唯一内建的映射类型。字典中的值没有特定的顺序都被存储在特定(不可重复)的键下。键是不可变的元素。

 

1. 创建字典

phonebook = {’Alice‘:’2341‘, ’Beth‘:’3654‘, ’Cecli‘:’7845‘}

1.1 dict类型(可以使用dict函数,通过其他映射或者(键,值)的序列创建字典)

items = [('age','42'), ('name','alex')]

d = dict(items) ===> d = {'age':'42', 'name':'alex'}

 

2. 字典的基本操作

len(d) 返回字典中项(键-值)的数量

d[k] 返回键K关联的值

d[k] = v 将值V关联到键K上

del d[k] 删除键为K的项

k in d 检查字典中是否含有键为K的项

 

3. 字典的格式化字符串

phonebook = {'Alice':'2341', 'Beth':'3654', 'Cecli':'7845'}

'Cecli phone number is %(Cecli)s' % phonebook

 

4. 字典的方法

4.1 clear (清除字典中所有的项,原地操作,无返回值)

d = {'name':'coloj', 'age':''22}

return_values = d.clear() ===> d = {}

print return_values ===> None (因为是原地操作,不会给其他变量赋值,所以没有返回值)

 

4.2 copy & deepcopy

copy(浅拷贝)

x = {'name':'alex', 'number': ['foo','lee','coll']}

y = x.copy()

y[number].remove('lee')

y[name] = 'Pee'

y ===> {'name':'Pee', 'number': ['foo','coll']}

x ===> {'name':'alex', 'number': ['foo','coll']}

deepcopy(深拷贝)

from copy import deepcopy

a = {'name': ['aaa','bbb','ccc']}

b = deepcopy(a)

b['name'].append('oio')

b ===> {'name': ['aaa','bbb','ccc','olo']}

a ===> {name': ['aaa','bbb','ccc']}

 

4.3 fromkey(使用给定的键创建新的字典)

dict.fromkey(['name','age'])

{'name':None,‘age’:None}

 

4.4 get(访问字典的项,在键有值的情况下返回值,没有值得情况下返回None.或者其他的自定义的返回值)

d.get('name', 'Not found') ====> Not found

 

4.5 has_key (Python3.*中已经去掉该函数,判断字典中是否含有特定的键)

 

4.6 items & iteritems

items( 将字典中所有的项一列表的形式返回)

phonebook = {’Alice‘:’2341‘, ’Beth‘:’3654‘, ’Cecli‘:’7845‘}

phonebook.items() ===> [('Alice','2341'),('Beth','3654'),('Cecli','7845')]

iteritems(将所有的项弄成一个迭代器,在Python3中没有该函数)

phonebook = {’Alice‘:’2341‘, ’Beth‘:’3654‘, ’Cecli‘:’7845‘}

list(phonebook.iteritems()) ===> [('Alice','2341'),('Beth','3654'),('Cecli','7845')]

 

4.7 popitem (类似于list.pop(),但是popitem弹出随机的项,可以一个一个移除并处理移除的项)

phonebook = {’Alice‘:’2341‘, ’Beth‘:’3654‘, ’Cecli‘:’7845‘}

phonebook.popitem()

('Beth', '3654')

phonebook = {’Alice‘:’2341‘, ’Cecli‘:’7845‘}

 

4.8 setdefault (类似get,能够获取到给定键的值 还可以在字典中不存在给定键的情况下设定相应的键值对)

d = {'x': 1}

d.setdefault('x') ===> 1

d.setdefault('y',2) ===> d = {'x':1, 'y':2}

 

 

4.9 keys & iterkeys

(keys类似items只不过这个是将字典所有的键作为列表返回)

phonebook = {’Alice‘:’2341‘, ’Beth‘:’3654‘, ’Cecli‘:’7845‘}

phonebook.keys() ===> ['Alice', 'Beth', 'Cecli']

(iterkeys类似于iteritems返回一个迭代器)

phonebook = {’Alice‘:’2341‘, ’Beth‘:’3654‘, ’Cecli‘:’7845‘}

list(phonebook.itekeys()) ===> ['Alice', 'Beth', 'Cecli']

 

4.10 pop (获得给定键的值,并将该键-值在字典中删除.弹出给定的键并返回该键的值。必须给键)

d = {'x':1, 'Y':2}

d.pop('x') ===>1

d = {'Y':2}

 

4.11 update (利用一个字典更新另外一个字典,假设后边的那个中有前边的一样的键,则用后边的键的值更新前边的键的值。扩展和更新的作用)

dict_u = {'a':1}

ditc_i = {'b':2}

ditc_u.update(dict_i) ===>dict_u = {'a':1, 'b':2}

 

w = {'a': '1'}

e = {'a': '2'}

e.update(w) ===> e = {'a': '1'}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值