03 python基础 字典

Python的字典数据类型是基于hash散列算法实现的,采用键值对(key:value)的形式,根据key的值计算value的地址,具有非常快的查取和插入速度。但它是无序的,包含的元素个数不限,值的类型也可以是其它任何数据类型!

字典的每个键值对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,例如:

d = {key1 : value1, key2 : value2 }
key具有唯一性,value可以重复

1. 创建字典

dict()函数是Python内置的创建字典的方法。

dic = {}    # 创建空字典
dic = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}

>>> dict([('sape', 4139), ('guido', 4127), ('jack', 4098)])
{'sape': 4139, 'jack': 4098, 'guido': 4127}

>>> dict(sape=4139, guido=4127, jack=4098)
{'sape': 4139, 'jack': 4098, 'guido': 4127}

2. 访问字典

字典是集合类型,不是序列类型,因此没有索引下标的概念,更没有切片的说法。但是,与list类似,字典采用把相应的键放入方括号内获取对应值的方式取值。

dic = {'Name': 'Jack','Age': 7, 'Class': 'First'}
print ("dic['Name']: ", dic['Name'])
print ("dic['Age']: ", dic['Age'])

如果访问字典里没有的键,会抛出异常

3. 增加和修改

增加就是往字典插入新的键值对,修改就是给原有的键赋予新的值。由于一个key只能对应一个值,所以,多次对一个key赋值,后面的值会把前面的值冲掉。

>>> dic = {'Name': 'Jack','Age': 7, 'Class': 'First'}
>>> dic["address"] = "Shanghai"
>>> dic["address"] = "Beijing"
>>> dic["Age"] = 18
>>> dic
{'Name': 'Jack', 'Age': 18, 'Class': 'First', 'address': 'Beijing'}
要统计字典内键的个数,可以使用Python内置的len()函数:

>>> dic
{'Name': 'Jack', 'Age': 18, 'Class': 'First', 'address': 'Beijing'}
>>> len(dic)

4. 删除字典元素、清空字典和删除字典

使用del关键字删除字典元素或者字典本身
使用字典的clear()方法清空字典。

>>> dic
{'Name': 'Jack', 'Age': '20', 'Class': 'First', 'sex': 'male'}
>>> del dic['Name']              # 删除指定的键
>>> dic
{'Age': '20', 'Class': 'First', 'sex': 'male'}
>>> a = dic.pop('Class')         # 弹出并返回指定的键
>>> a
'First'
>>> dic
{'Name': 'Jack', 'Age': 7}
>>> dic.clear()                  # 清空字典
>>> dic
{}
>>> del dic                      # 删除字典本身
>>> dic
Traceback (most recent call last):
  File "<pyshell#20>", line 1, in <module>
    dic
NameError: name 'dic' is not defined

5. 字典的内置方法

方法作用
clear()删除字典内所有元素
copy()返回一个字典的浅复制
fromkeys()创建一个新字典,以序列seq中元素做字典的键
get(key)返回指定键的值,如果值不在字典中,则返回default值
items()以列表返回可遍历的(键, 值) 元组对
keys()以列表返回字典所有的键
values()以列表返回字典所有的值
pop(key)删除并返回指定key的值
popitem()随机删除并返回字典内某个键的值
setdefault(key, default=None)和get()类似,但如果键不存在于字典中,将会添加键并将值设为default
update(dict2)把字典dict2的键/值对更新到dict里

一些例子:

>>> dic = {'Name': 'Jack', 'Age': 7, 'Class': 'First'}
>>> dic.get('sex')  # 访问不存在的key,没有报错,但是IDLE不会显示None
>>> dic['sex']      # 报错
Traceback (most recent call last):
  File "<pyshell#44>", line 1, in <module>
    dic["sex"]
KeyError: 'sex'
>>> dic.items()
dict_items([('Name', 'Jack'), ('Age', 7), ('Class', 'First')])
>>> dic.values()
dict_values(['Jack', 7, 'First'])
>>> dic.keys()
dict_keys(['Name', 'Age', 'Class'])
>>> dic.pop("Name")
'Jack'
>>> dic
{'Age': 18, 'Class': 'First', 'address': 'Beijing'}
>>> dic.popitem()
('address', 'Beijing')
>>> dic
{'Age': 18, 'Class': 'First'}

6. 遍历字典方法

遍历字典获得的键值对是随机无序的!以下的遍历方法必须全部熟练掌握。

dic = {‘Name’: ‘Jack’, ‘Age’: 7, ‘Class’: ‘First’}

dic = {'Name': 'Jack', 'Age': 7, 'Class': 'First'}

# 1  直接遍历字典获取键,根据键取值
for key in dic:
    print(key, dic[key])

# 2  利用items方法获取键值,速度很慢,少用!
for key,value in dic.items():
    print(key,value)

#3  利用keys方法获取键
for key in dic.keys():
    print(key, dic[key])

#4  利用values方法获取值,但无法获取对应的键。
for value in dic.values():
    print(value)

7. 扩展

Python内置了一个collections标准库,在这里有一个OrderedDict有序字典类,可以实现字典的有序控制,实现一个有序字典

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值